---
title: "Deploy Summit Finance"
description: "Modern invoicing created by kugie.app, designed for small businesses."
category: "Other"
url: https://railway.com/deploy/x5njSj
---

# Deploy Summit Finance

Modern invoicing created by kugie.app, designed for small businesses.

**[Deploy Summit Finance on Railway](https://railway.com/template/x5njSj)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/x5njSj/manifest.json

- **Creator:** kugie
- **Category:** Other
- **Total deploys:** 36

## Template content

### minio-console https://res.cloudinary.com/h5kvzw/image/upload/v1706062979/MINIO_Bird_vbtpet.png

- **Source:** railwayapp-templates/minio-console
- **Start command:** `/bin/sh -c "exec console server --host 0.0.0.0 --port $PORT"`
- **Public domain:** Yes

### MinIO https://res.cloudinary.com/h5kvzw/image/upload/v1706062979/MINIO_Bird_vbtpet.png

- **Image:** minio/minio:latest
- **Start command:** `/bin/sh -c "exec minio server --address [::]:$MINIO_PRIVATE_PORT $RAILWAY_VOLUME_MOUNT_PATH"`
- **Public domain:** Yes

### summit https://summitfinance.app/favicon.ico

- **Source:** kugie-app/summit
- **Public domain:** Yes

### Slack Webhook https://a.slack-edge.com/cebaa/img/ico/favicon.ico

- **Image:** ghcr.io/railwayapp/function-bun:1.2.10
- **Start command:** `./run.sh aW1wb3J0IHsgSG9ubyB9IGZyb20gImhvbm9ANCI7CmltcG9ydCB7IGNvcnMgfSBmcm9tICJob25vL2NvcnMiOwppbXBvcnQgImRvdGVudi9jb25maWciOwoKY29uc3QgYXBwID0gbmV3IEhvbm8oKTsKYXBwLnVzZSgiLyoiLCBjb3JzKCkpOwoKYXBwLmdldCgiLyIsIChjKSA9PiBjLnRleHQoIlhlbmRpdCB3ZWJob29rIGhhbmRsZXIiKSk7CmFwcC5nZXQoIi9hcGkvaGVhbHRoIiwgKGMpID0+IGMuanNvbih7IHN0YXR1czogIm9rIiB9KSk7CgovLyBGb3JtYXQgY3VycmVuY3kgYXMgSURSCmZ1bmN0aW9uIGZvcm1hdElEUihhbW91bnQpIHsKICByZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJpZC1JRCIsIHsKICAgIHN0eWxlOiAiY3VycmVuY3kiLAogICAgY3VycmVuY3k6ICJJRFIiLAogICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLAogIH0pLmZvcm1hdChhbW91bnQpOwp9CgovLyBIZWxwZXIgZnVuY3Rpb24gdG8gZm9ybWF0IGRhdGUKZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlU3RyaW5nKSB7CiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRhdGVTdHJpbmcpOwogIHJldHVybiBkYXRlLnRvTG9jYWxlU3RyaW5nKCJpZC1JRCIsIHsKICAgIGRhdGVTdHlsZTogIm1lZGl1bSIsCiAgICB0aW1lU3R5bGU6ICJzaG9ydCIsCiAgICB0aW1lWm9uZTogIkFzaWEvSmFrYXJ0YSIsCiAgfSk7Cn0KCi8vIEVuaGFuY2VkIGVuZHBvaW50IHRvIGhhbmRsZSBYZW5kaXQgaW52b2ljZSBwYXltZW50IHdlYmhvb2sKYXBwLnBvc3QoIi9hcGkvbm90aWZ5L2ludm9pY2UiLCBhc3luYyAoYykgPT4gewogIHRyeSB7CiAgICAvLyBWZXJpZnkgdGhlIFhlbmRpdCB3ZWJob29rIHVzaW5nIHRva2VuIHZlcmlmaWNhdGlvbgogICAgY29uc3QgY2FsbGJhY2tUb2tlbiA9IGMucmVxLmhlYWRlcnMuZ2V0KCJ4LWNhbGxiYWNrLXRva2VuIik7CiAgICBjb25zdCBleHBlY3RlZFRva2VuID0gcHJvY2Vzcy5lbnYuWEVORElUX0NBTExCQUNLX1ZFUklGSUNBVElPTl9UT0tFTjsKCiAgICBpZiAoY2FsbGJhY2tUb2tlbiAhPT0gZXhwZWN0ZWRUb2tlbikgewogICAgICBjb25zb2xlLmVycm9yKCJJbnZhbGlkIFhlbmRpdCBjYWxsYmFjayB0b2tlbiIpOwogICAgICByZXR1cm4gYy5qc29uKHsgbWVzc2FnZTogIkludmFsaWQgdG9rZW4iIH0sIDQwMSk7CiAgICB9CgogICAgLy8gUGFyc2UgdGhlIHdlYmhvb2sgcGF5bG9hZAogICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGMucmVxLmpzb24oKTsKICAgIGNvbnNvbGUubG9nKHBheWxvYWQpOwoKICAgIC8vIFRoZSBTbGFjayB3ZWJob29rIFVSTAogICAgY29uc3Qgd2ViaG9va1VybCA9IHByb2Nlc3MuZW52LlNMQUNLX1dFQkhPT0s7CgogICAgLy8gRGV0ZXJtaW5lIG1lc3NhZ2Ugc3R5bGluZyBhbmQgY29udGVudCBiYXNlZCBvbiBwYXltZW50IHN0YXR1cwogICAgbGV0IGhlYWRlclRleHQgPSAiIjsKICAgIGxldCBoZWFkZXJFbW9qaSA9ICIiOwogICAgbGV0IG1lc3NhZ2VUZXh0ID0gIiI7CiAgICBsZXQgYnV0dG9uU3R5bGUgPSAicHJpbWFyeSI7CiAgICBsZXQgYnV0dG9uVGV4dCA9ICJWaWV3IERldGFpbHMiOwogICAgbGV0IGludm9pY2VVcGRhdGVSZXN1bHQgPSBudWxsOwoKICAgIC8vIENvbmZpZ3VyZSBtZXNzYWdlIGJhc2VkIG9uIHBheW1lbnQgc3RhdHVzCiAgICBzd2l0Y2ggKHBheWxvYWQuc3RhdHVzKSB7CiAgICAgIGNhc2UgIlBBSUQiOgogICAgICAgIGhlYWRlclRleHQgPSAiUGF5bWVudCBSZWNlaXZlZCEiOwogICAgICAgIGhlYWRlckVtb2ppID0gIvCfjokiOwogICAgICAgIG1lc3NhZ2VUZXh0ID0gYEhpLCBhIHBheW1lbnQgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZCB0aHJvdWdoIFhlbmRpdCFgOwoKICAgICAgICAvLyBVcGRhdGUgaW52b2ljZSBzdGF0dXMgYnkgY2FsbGluZyB0aGUgaW50ZXJuYWwgQVBJCiAgICAgICAgdHJ5IHsKICAgICAgICAgIC8vIEZvcndhcmQgdGhlIHBheW1lbnQgZGF0YSB0byBvdXIgaW50ZXJuYWwgQVBJCiAgICAgICAgICBjb25zdCBhcGlSZXNwb25zZSA9IGF3YWl0IGZldGNoKAogICAgICAgICAgICBgJHtwcm9jZXNzLmVudi5JTlRFUk5BTF9BUElfVVJMfS9hcGkvd2ViaG9va3MveGVuZGl0L3BheW1lbnRgLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgbWV0aG9kOiAiUE9TVCIsCiAgICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgIkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiwKICAgICAgICAgICAgICAgICJ4LWNhbGxiYWNrLXRva2VuIjogY2FsbGJhY2tUb2tlbiB8fCAiIiwKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpLAogICAgICAgICAgICB9CiAgICAgICAgICApOwoKICAgICAgICAgIGlmIChhcGlSZXNwb25zZS5vaykgewogICAgICAgICAgICBpbnZvaWNlVXBkYXRlUmVzdWx0ID0gYXdhaXQgYXBpUmVzcG9uc2UuanNvbigpOwogICAgICAgICAgICBpZiAoaW52b2ljZVVwZGF0ZVJlc3VsdC5pbnZvaWNlTnVtYmVyKSB7CiAgICAgICAgICAgICAgbWVzc2FnZVRleHQgKz0gYFxuXG4qSW52b2ljZSAke2ludm9pY2VVcGRhdGVSZXN1bHQuaW52b2ljZU51bWJlcn0gaGFzIGJlZW4gbWFya2VkIGFzIHBhaWQgaW4gdGhlIHN5c3RlbS4qYDsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY29uc3QgZXJyb3JEYXRhID0gYXdhaXQgYXBpUmVzcG9uc2UuanNvbigpOwogICAgICAgICAgICBjb25zb2xlLmVycm9yKCJBUEkgZXJyb3I6IiwgZXJyb3JEYXRhKTsKICAgICAgICAgICAgbWVzc2FnZVRleHQgKz0gYFxuXG7imqDvuI8gKk5vdGU6IENvdWxkIG5vdCB1cGRhdGUgaW52b2ljZSBzdGF0dXMgaW4gdGhlIHN5c3RlbS4gUGxlYXNlIHVwZGF0ZSBtYW51YWxseS4qYDsKICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChhcGlFcnJvcikgewogICAgICAgICAgY29uc29sZS5lcnJvcigiRXJyb3IgdXBkYXRpbmcgaW52b2ljZSBzdGF0dXM6IiwgYXBpRXJyb3IpOwogICAgICAgICAgbWVzc2FnZVRleHQgKz0gYFxuXG7imqDvuI8gKk5vdGU6IENvdWxkIG5vdCB1cGRhdGUgaW52b2ljZSBzdGF0dXMgaW4gdGhlIHN5c3RlbS4gUGxlYXNlIHVwZGF0ZSBtYW51YWxseS4qYDsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgIkVYUElSRUQiOgogICAgICAgIGhlYWRlclRleHQgPSAiUGF5bWVudCBFeHBpcmVkIjsKICAgICAgICBoZWFkZXJFbW9qaSA9ICLimqDvuI8iOwogICAgICAgIG1lc3NhZ2VUZXh0ID0gYEhpIDwhc3VidGVhbV5TMDhFS0dLUEhQVj4sIGFuIGludm9pY2UgcGF5bWVudCBoYXMgZXhwaXJlZCB3aXRob3V0IGJlaW5nIGNvbXBsZXRlZC5gOwogICAgICAgIGJ1dHRvblN0eWxlID0gImRhbmdlciI7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgIlBFTkRJTkciOgogICAgICAgIGhlYWRlclRleHQgPSAiUGF5bWVudCBQZW5kaW5nIjsKICAgICAgICBoZWFkZXJFbW9qaSA9ICLij7MiOwogICAgICAgIG1lc3NhZ2VUZXh0ID0gYEhpIDwhc3VidGVhbV5TMDhFS0dLUEhQVj4sIGEgbmV3IGludm9pY2UgaGFzIGJlZW4gY3JlYXRlZCBhbmQgaXMgYXdhaXRpbmcgcGF5bWVudC5gOwogICAgICAgIGJ1dHRvblN0eWxlID0gImRlZmF1bHQiOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICJTRVRUTEVEIjoKICAgICAgICBoZWFkZXJUZXh0ID0gIlBheW1lbnQgU2V0dGxlZCI7CiAgICAgICAgaGVhZGVyRW1vamkgPSAi4pyFIjsKICAgICAgICBtZXNzYWdlVGV4dCA9IGBIaSA8IXN1YnRlYW1eUzA4RUtHS1BIUFY+LCBhIHBheW1lbnQgaGFzIGJlZW4gc2V0dGxlZCBhbmQgZnVuZHMgaGF2ZSBiZWVuIGRpc2J1cnNlZC5gOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICJGQUlMRUQiOgogICAgICAgIGhlYWRlclRleHQgPSAiUGF5bWVudCBGYWlsZWQiOwogICAgICAgIGhlYWRlckVtb2ppID0gIuKdjCI7CiAgICAgICAgbWVzc2FnZVRleHQgPSBgSGkgPCFzdWJ0ZWFtXlMwOEVLR0tQSFBWPiwgYSBwYXltZW50IGF0dGVtcHQgaGFzIGZhaWxlZC5gOwogICAgICAgIGJ1dHRvblN0eWxlID0gImRhbmdlciI7CiAgICAgICAgYnV0dG9uVGV4dCA9ICJWaWV3IFBheW1lbnQgRXJyb3IiOwogICAgICAgIGJyZWFrOwogICAgICBkZWZhdWx0OgogICAgICAgIGhlYWRlclRleHQgPSAiUGF5bWVudCBTdGF0dXMgVXBkYXRlIjsKICAgICAgICBoZWFkZXJFbW9qaSA9ICLwn5OMIjsKICAgICAgICBtZXNzYWdlVGV4dCA9IGBIaSA8IXN1YnRlYW1eUzA4RUtHS1BIUFY+LCB0aGVyZSdzIGFuIHVwZGF0ZSBvbiBhIHBheW1lbnQgKHN0YXR1czogJHtwYXlsb2FkLnN0YXR1c30pLmA7CiAgICB9CgogICAgLy8gQ29tbW9uIGZpZWxkcyB0aGF0IGFwcGx5IHRvIGFsbCBzdGF0dXNlcwogICAgY29uc3QgY29tbW9uRmllbGRzID0gWwogICAgICB7CiAgICAgICAgdHlwZTogIm1ya2R3biIsCiAgICAgICAgdGV4dDogYCpJbnZvaWNlIElEOipcbiR7cGF5bG9hZC5leHRlcm5hbF9pZCB8fCBwYXlsb2FkLmlkfWAsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICB0eXBlOiAibXJrZHduIiwKICAgICAgICB0ZXh0OiBgKlN0YXR1czoqXG4ke3BheWxvYWQuc3RhdHVzfWAsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICB0eXBlOiAibXJrZHduIiwKICAgICAgICB0ZXh0OiBgKkFtb3VudDoqXG4ke2Zvcm1hdElEUihwYXlsb2FkLmFtb3VudCl9YCwKICAgICAgfSwKICAgIF07CgogICAgLy8gRmllbGRzIHRoYXQgbWF5IGRlcGVuZCBvbiBzdGF0dXMKICAgIGNvbnN0IGFkZGl0aW9uYWxGaWVsZHMgPSBbXTsKCiAgICAvLyBBZGQgcGF5bWVudCBtZXRob2QgaWYgYXZhaWxhYmxlCiAgICBpZiAoCiAgICAgIHBheWxvYWQucGF5bWVudF9tZXRob2QgfHwKICAgICAgcGF5bG9hZC5iYW5rX2NvZGUgfHwKICAgICAgcGF5bG9hZC5wYXltZW50X2NoYW5uZWwKICAgICkgewogICAgICBhZGRpdGlvbmFsRmllbGRzLnB1c2goewogICAgICAgIHR5cGU6ICJtcmtkd24iLAogICAgICAgIHRleHQ6IGAqUGF5bWVudCBNZXRob2Q6KlxuJHtwYXlsb2FkLnBheW1lbnRfbWV0aG9kIHx8ICJVbmtub3duIn0gKCR7CiAgICAgICAgICBwYXlsb2FkLmJhbmtfY29kZSB8fCBwYXlsb2FkLnBheW1lbnRfY2hhbm5lbCB8fCAiTi9BIgogICAgICAgIH0pYCwKICAgICAgfSk7CiAgICB9CgogICAgLy8gQWRkIHBheWVyIGluZm8gaWYgYXZhaWxhYmxlCiAgICBpZiAocGF5bG9hZC5wYXllcl9lbWFpbCkgewogICAgICBhZGRpdGlvbmFsRmllbGRzLnB1c2goewogICAgICAgIHR5cGU6ICJtcmtkd24iLAogICAgICAgIHRleHQ6IGAqUGF5ZXI6KlxuJHtwYXlsb2FkLnBheWVyX2VtYWlsfWAsCiAgICAgIH0pOwogICAgfQoKICAgIC8vIEFkZCB0aW1lc3RhbXAgYmFzZWQgb24gc3RhdHVzCiAgICBpZiAocGF5bG9hZC5zdGF0dXMgPT09ICJQQUlEIiAmJiBwYXlsb2FkLnBhaWRfYXQpIHsKICAgICAgYWRkaXRpb25hbEZpZWxkcy5wdXNoKHsKICAgICAgICB0eXBlOiAibXJrZHduIiwKICAgICAgICB0ZXh0OiBgKlBhaWQgQXQ6KlxuJHtmb3JtYXREYXRlKHBheWxvYWQucGFpZF9hdCl9YCwKICAgICAgfSk7CiAgICB9IGVsc2UgaWYgKHBheWxvYWQuc3RhdHVzID09PSAiRVhQSVJFRCIgJiYgcGF5bG9hZC51cGRhdGVkKSB7CiAgICAgIGFkZGl0aW9uYWxGaWVsZHMucHVzaCh7CiAgICAgICAgdHlwZTogIm1ya2R3biIsCiAgICAgICAgdGV4dDogYCpFeHBpcmVkIEF0OipcbiR7Zm9ybWF0RGF0ZShwYXlsb2FkLnVwZGF0ZWQpfWAsCiAgICAgIH0pOwogICAgfSBlbHNlIGlmIChwYXlsb2FkLmNyZWF0ZWQpIHsKICAgICAgYWRkaXRpb25hbEZpZWxkcy5wdXNoKHsKICAgICAgICB0eXBlOiAibXJrZHduIiwKICAgICAgICB0ZXh0OiBgKkNyZWF0ZWQgQXQ6KlxuJHtmb3JtYXREYXRlKHBheWxvYWQuY3JlYXRlZCl9YCwKICAgICAgfSk7CiAgICB9CgogICAgLy8gQ3JlYXRlIGEgbW9yZSBkZXNjcmlwdGl2ZSBtZXNzYWdlIHdpdGggcGF5bWVudCBkZXRhaWxzCiAgICBjb25zdCBtZXNzYWdlID0gewogICAgICBibG9ja3M6IFsKICAgICAgICB7CiAgICAgICAgICB0eXBlOiAiaGVhZGVyIiwKICAgICAgICAgIHRleHQ6IHsKICAgICAgICAgICAgdHlwZTogInBsYWluX3RleHQiLAogICAgICAgICAgICB0ZXh0OiBgJHtoZWFkZXJFbW9qaX0gJHtoZWFkZXJUZXh0fWAsCiAgICAgICAgICAgIGVtb2ppOiB0cnVlLAogICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHR5cGU6ICJzZWN0aW9uIiwKICAgICAgICAgIHRleHQ6IHsKICAgICAgICAgICAgdHlwZTogIm1ya2R3biIsCiAgICAgICAgICAgIHRleHQ6IG1lc3NhZ2VUZXh0LAogICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHR5cGU6ICJkaXZpZGVyIiwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHR5cGU6ICJzZWN0aW9uIiwKICAgICAgICAgIGZpZWxkczogWy4uLmNvbW1vbkZpZWxkcywgLi4uYWRkaXRpb25hbEZpZWxkc10sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICB0eXBlOiAiY29udGV4dCIsCiAgICAgICAgICBlbGVtZW50czogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdHlwZTogIm1ya2R3biIsCiAgICAgICAgICAgICAgdGV4dDogYCpEZXNjcmlwdGlvbjoqICR7CiAgICAgICAgICAgICAgICBwYXlsb2FkLmRlc2NyaXB0aW9uIHx8ICJObyBkZXNjcmlwdGlvbiBwcm92aWRlZCIKICAgICAgICAgICAgICB9YCwKICAgICAgICAgICAgfSwKICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICB0eXBlOiAiYWN0aW9ucyIsCiAgICAgICAgICBlbGVtZW50czogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdHlwZTogImJ1dHRvbiIsCiAgICAgICAgICAgICAgdGV4dDogewogICAgICAgICAgICAgICAgdHlwZTogInBsYWluX3RleHQiLAogICAgICAgICAgICAgICAgdGV4dDogYnV0dG9uVGV4dCwKICAgICAgICAgICAgICAgIGVtb2ppOiB0cnVlLAogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgdXJsOiAiaHR0cHM6Ly9kYXNoYm9hcmQueGVuZGl0LmNvL2ludm9pY2VzIiwKICAgICAgICAgICAgICBzdHlsZTogYnV0dG9uU3R5bGUsCiAgICAgICAgICAgIH0sCiAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgIF0sCiAgICB9OwoKICAgIC8vIFNlbmQgdGhlIG5vdGlmaWNhdGlvbiB0byBTbGFjawogICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh3ZWJob29rVXJsLCB7CiAgICAgIG1ldGhvZDogIlBPU1QiLAogICAgICBoZWFkZXJzOiB7CiAgICAgICAgIkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiwKICAgICAgfSwKICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkobWVzc2FnZSksCiAgICB9KTsKCiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICBgRmFpbGVkIHRvIHNlbmQgU2xhY2sgbm90aWZpY2F0aW9uOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWAKICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gYy5qc29uKHsKICAgICAgc3VjY2VzczogdHJ1ZSwKICAgICAgbWVzc2FnZTogYCR7aGVhZGVyVGV4dH0gbm90aWZpY2F0aW9uIHNlbnQgdG8gU2xhY2tgLAogICAgICBwYXltZW50X2RldGFpbHM6IHsKICAgICAgICBpZDogcGF5bG9hZC5pZCwKICAgICAgICBleHRlcm5hbF9pZDogcGF5bG9hZC5leHRlcm5hbF9pZCwKICAgICAgICBhbW91bnQ6IHBheWxvYWQuYW1vdW50LAogICAgICAgIHN0YXR1czogcGF5bG9hZC5zdGF0dXMsCiAgICAgIH0sCiAgICAgIGludm9pY2VfdXBkYXRlOiBpbnZvaWNlVXBkYXRlUmVzdWx0LAogICAgfSk7CiAgfSBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnNvbGUuZXJyb3IoCiAgICAgICJFcnJvciBwcm9jZXNzaW5nIHdlYmhvb2sgb3Igc2VuZGluZyBTbGFjayBub3RpZmljYXRpb246IiwKICAgICAgZXJyb3IKICAgICk7CiAgICByZXR1cm4gYy5qc29uKHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiBlcnJvci5tZXNzYWdlIH0sIDUwMCk7CiAgfQp9KTsKCkJ1bi5zZXJ2ZSh7CiAgcG9ydDogcHJvY2Vzcy5lbnYuUE9SVCA/PyAzMDAwLAogIGZldGNoOiBhcHAuZmV0Y2gsCn0pOwo=`

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:16

## Documentation

# Summit Finance
![image](https://summitfinance.app/og-image.png)

Summit Finance is a modern invoice and financial management app for small businesses, created by [Kugie](https://kugie.app).

# Deploy and Host

Deploy Summit Finance to Railway with one-click and get your invoicing system running in under 3 minutes. Includes PostgreSQL database, MinIO storage, and web application.

## About Hosting

Summit Finance runs on Railway's cloud infrastructure providing:
- Automatic scaling for growing invoice volumes
- Managed PostgreSQL with automated backups
- MinIO object storage for attachments
- SSL certificates and enterprise security
- 99.9% uptime guarantee

## Why Deploy

**Small Businesses:** Stop paying monthly invoicing fees, own your data, customize features
**Developers:** Full source access, modern tech stack, easy integrations
**Agencies:** Deploy for multiple clients, white-label solution, recurring revenue

## Common Use Cases

- **Freelancers:** Professional invoicing, expense tracking, online payments
- **Service Businesses:** Recurring billing, payment processing, client management
- **E-commerce:** B2B invoicing, supplier management, financial reporting
- **Agencies:** Multi-client billing, project tracking, team collaboration
- **Startups:** Scalable payment infrastructure, professional invoicing

## Dependencies for

**Core:** Railway, PostgreSQL, MinIO (auto-provisioned)
**Payment:** Xendit account required for payments
**Email:** Resend account recommended for notifications
**Optional:** Slack webhooks, custom domain

### Deployment Dependencies

**Auto-provisioned:** PostgreSQL, MinIO, Node.js runtime
**Manual setup:** Xendit account, Resend account, environment variables

Required environment variables:
```
XENDIT_SECRET_KEY=your_key
XENDIT_CALLBACK_VERIFICATION_TOKEN=your_token
RESEND_API_KEY=your_key
RESEND_FROM_EMAIL=your_email
```

## Quick Start

### Prerequisites
- Railway account
- Xendit account (payments)
- Resend account (email)

### Step 1: Deploy
Click "Deploy to Railway" - automatically sets up PostgreSQL, MinIO, and web app.

### Step 2: Configure Environment Variables

**Email (Recommended):**
1. Get Resend API key
2. Add to Railway:
```
RESEND_API_KEY=your_key
RESEND_FROM_EMAIL=verified@domain.com
RESEND_FROM_NAME=Your Name
```

**Payments (Required):**
1. Get Xendit API keys
2. Add to Railway:
```
XENDIT_SECRET_KEY=your_key
XENDIT_CALLBACK_VERIFICATION_TOKEN=your_token
```

### Step 3: Enable File Uploads
1. Access MinIO Console from Railway
2. Create new access key
3. Update environment variables:
```
MINIO_ACCESS_KEY=generated_key
MINIO_SECRET_KEY=generated_secret
```
4. Restart application

### Step 4: First Login
1. Open deployed app
2. Create admin account
3. Set up company profile

## Setup Guides

### Xendit Setup
1. Create account at [xendit.co](https://xendit.co)
2. Navigate to Settings > API Keys
3. Generate Secret Key
4. Copy Webhook verification token
5. Add both to Railway environment

### Resend Setup
1. Sign up at [resend.com](https://resend.com)
2. Create API Key
3. Verify sender email
4. Add key and email to Railway

### Slack Webhooks (Optional)
1. Create Slack app at [api.slack.com/apps](https://api.slack.com/apps)
2. Enable Incoming Webhooks
3. Add webhook to workspace
4. Copy URL to `SLACK_WEBHOOK_URL`

### MinIO Access Keys
1. Access MinIO Console from Railway
2. Go to Access Keys > Create access key
3. Save both keys
4. Add to Railway environment variables
5. Restart application

## Troubleshooting

- **Email issues:** Verify Resend API key and sender email
- **File uploads fail:** Check MinIO access keys
- **Payment problems:** Verify Xendit account and API keys
- **Database issues:** Restart Railway service

For help, check our [GitHub repository](https://github.com/kugie-app/summit) or contact [Kugie.app](https://www.kugie.app/contact).

## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/x5njSj
