recoin is an open-source, local-first finance tracker designed to empower individuals to take control of their financial data. It is built with Go, Bun, Vite, Retend, and Supabase.
This project is a work in progress and is not yet ready for production use.
This project is a monorepo managed with workspaces, containing the following applications:
apps/api
: A backend API built with Go, responsible for data management and API endpoints.apps/site
: The frontend website built with Vite, TypeScript, Sass, and Retend, providing the user interface.
Ensure you have the following installed:
-
Install dependencies:
bun install
-
Start the development server:
bun run site:dev
This will launch the Vite development server for the
apps/site
application, typically accessible athttp://localhost:5229
.
-
Start the API server:
bun run api:dev
This command navigates to the
apps/api
directory and runs the Go application usinggo run main.go
. Ensure Go is correctly installed and configured.
The API and site rely on environment variables for configuration, managed via .env
files.
Create a .env
file in the apps/api
directory with the following variables:
SUPABASE_API_URL
: Required. The URL for your Supabase project API.SUPABASE_SERVICE_ROLE_KEY
: Required. The service role key for your Supabase project.PORT
: Optional. The port the API server will run on (defaults to3000
).FRONTEND_URL
: Optional. The URL of the frontend application, used for CORS configuration.
Create a .env
file in the apps/site
directory (or use .env.development
, .env.production
) with the following variable:
VITE_API_URL
: Required. The full URL where the backend API (apps/api
) is running (e.g.,http://localhost:3000
).
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a new branch (
git checkout -b feature/your-feature-name
). - Make your changes.
- Commit your changes (
git commit -am 'Add some feature'
). - Push to the branch (
git push origin feature/your-feature-name
). - Create a new Pull Request.
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.