A full-stack wallet application built with Go backend and React frontend. This application provides comprehensive financial management features including account tracking, transactions, budgets, investments, and more.
wallet_app/
├── backend/ # Go backend application
│ ├── config.env # Environment configuration
│ ├── go.mod # Go module file
│ ├── main.go # Application entry point
│ ├── internal/ # Internal packages
│ ├── pkg/ # Shared packages
│ └── utils/ # Utility functions
├── frontend/ # React frontend application
│ ├── src/ # Source code
│ ├── package.json # Node dependencies
│ └── vite.config.js # Vite configuration
├── run.bat # Script to run both frontend and backend
└── README.md # This file
- User Management: Registration and authentication with JWT tokens
- Account Management: Multiple accounts with different currencies
- Transaction Tracking: Record income and expenses
- Transfer Management: Move money between accounts
- Budget Planning: Set and track budgets
- Investment Tracking: Monitor investment portfolios
- Recurring Transactions: Automate regular payments
- Cash Flow Analysis: Generate financial summaries
- Multi-Currency Support: Handle different currencies
- Bank Integration: Connect with financial institutions
-
Install PostgreSQL and create a database:
CREATE DATABASE wallet_db;
-
Run the setup script:
cd backend psql -U postgres -d wallet_db -f setup.sql -
Seed default admin user:
cd backend go run seeder.goDefault admin credentials:
- Email:
admin@walletapp.com - Password:
admin123
- Email:
-
Clone the repository
git clone <repository-url> cd wallet_app
-
Set up database (see Database Setup section above)
-
Run the application
# Double-click run.bat or run from command line ./run.batThis will start both the backend (http://localhost:8000) and frontend (http://localhost:5173).
-
Prerequisites
- Go (version 1.21 or higher)
- PostgreSQL database
-
Setup
cd backend go mod tidy -
Configuration
- Update
backend/config.envwith your database credentials - Ensure PostgreSQL is running and database is created
- Update
-
Run
go run main.go
-
Prerequisites
- Node.js (version 18 or higher)
-
Setup
cd frontend npm install -
Run
npm run dev
POST /api/v1/login- User loginPOST /api/v1/refresh- Refresh access token
All CRUD operations are available for the following resources under /api/v1:
/accounts- Account management/users- User management/transactions- Transaction management/transfers- Transfer management/budgets- Budget management/currencies- Currency management/expense-categories- Expense category management/banks- Bank management/investments- Investment management/recurring-transactions- Recurring transaction management/account-currencies- Account currency management/cash-flow-summaries- Cash flow summary management
All API endpoints except login and refresh require JWT authentication. Include the access token in the Authorization header:
Authorization: Bearer <access_token>
- Backend: Go, Echo framework, PostgreSQL, Bun ORM, JWT authentication
- Frontend: React, Vite, Axios, React Router
- Database: PostgreSQL
- Authentication: JWT with access and refresh tokens
- Backend uses clean architecture with separate layers for handlers, services, and repositories
- Frontend uses reusable components for CRUD operations
- JWT tokens are automatically refreshed on expiration
- CORS is configured for local development
- Fork the repository
- Create a feature branch
- Make your changes
- Test both frontend and backend
- Submit a pull request
This project is licensed under the MIT License.