Salgadin is a web-based personal finance management tool designed to help users take control of their daily spending with clear visual insights.
- 📊 Interactive Graphs: Visualize how your daily expenses are distributed using dynamic charts.
- 🧾 Daily Summaries: Automatically receive a clear summary of your spending at the end of each day.
- 🏷️ Spending Categories: Organize your expenses into categories like Food, Transportation, Entertainment, and more.
- 🔍 Top Spending Highlights: Easily identify which categories consume most of your daily budget.
The name "Salgadin" comes from the Portuguese word for “savory snack” (salgadinho), like a pastel or coxinha. It’s a playful nod to those small, everyday purchases that seem harmless but quickly eat away at your budget.
- Frontend: React.js with TypeScript & Vite.
- Styling: Tailwind CSS.
- Form Handling: React Hook Form with Zod for validation.
- Data Visualization: Recharts.
- HTTP Client: Axios.
- Backend: C# with ASP.NET Core.
- Database: Entity Framework Core with SQL Server.
- Authentication: JWT (JSON Web Tokens).
- API Documentation: Swagger/OpenAPI.
- Logging: Serilog.
Instructions on how to set up and run the project locally.
- .NET 8 SDK
- Node.js (v18 or newer)
- SQL Server (LocalDB or a full instance)
- Clone the repository:
git clone [https://github.com/wmsalves/salgadin.git](https://github.com/wmsalves/salgadin.git)
- Navigate to the backend folder:
cd salgadin/Salgadin - Update the database connection string in
appsettings.jsonif needed. - Apply EF Core migrations to create the database:
dotnet ef database update
- Run the application:
The API will be available at
dotnet run
https://localhost:7XXX.
- In a new terminal, navigate to the frontend folder:
cd salgadin/Salgadin-web - Install dependencies:
npm install
- Run the development server:
The application will be available at
npm run dev
http://localhost:5173.
A brief overview of the main API endpoints.
POST /api/auth/register: Register a new user.POST /api/auth/login: Authenticate a user and receive a JWT.GET /api/expenses: Get a paginated list of expenses for the authenticated user.POST /api/expenses: Create a new expense.GET /api/categories: Get all categories for the authenticated user.
For complete and interactive API documentation, run the backend and navigate to the
/swaggerendpoint.
You can explore the original design prototype here: View Prototype on Figma
💡 Note: This is a design mockup and may differ from the final implementation.
🚧 Under active development. The core backend is robust, featuring logging, error handling, and a clean architecture. The UI for the landing page and authentication flow is complete and polished. Next step: Full integration between the frontend and backend.
Pull requests and ideas are welcome. For major changes, please open an issue first to discuss what you would like to change.
This project is licensed under the MIT License.