A full-stack web application for tracking savings and spending with real-time insights. Built with modern web technologies and best practices for clean, maintainable code.
- Secure Authentication – User registration and login with bcrypt password hashing and Google OAuth 2.0
- Transaction Tracking – Log and categorize income and expenses with detailed records
- Real-time Dashboard – Visual overview of spending patterns and financial insights
- Smart Tax Calculation – Automated tax computation based on 2025 US tax brackets and state rates
- Geo Comparison – Compare cost of living index and tax rank across US states to see the real impact on your financial goals
- User Profiles – Customizable accounts with editable profile information and savings goals
- Responsive Design – Mobile-friendly interface built with Bootstrap
- Session Management – Persistent user sessions with MongoDB integration
- AI Insights – Personalized financial recommendations via Groq SDK
Backend:
- Node.js – JavaScript runtime
- Express.js – Web framework
- MongoDB – NoSQL database
- Mongoose – Object modeling and validation
- Passport.js – Authentication middleware
- Groq SDK – AI-powered insights
Frontend:
Security & Tools:
- bcrypt – Password hashing
- express-validator – Input validation
- Morgan – HTTP logging
- Node.js (v18 or higher)
- MongoDB instance (local or MongoDB Atlas)
- npm or yarn
-
Clone the repository:
git clone https://github.com/your-username/nelel.git cd nelel -
Install dependencies:
npm install
-
Environment configuration:
Create a
config/.envfile in your project root:DB_STRING=mongodb+srv://username:[email protected]/nelel PORT=2121 SESSION_SECRET=your_session_secret_here GROQ_API_KEY=your_groq_api_key
-
Start the application:
Development mode (with auto-reload):
npm run dev
Production mode:
npm start
-
Open your browser: Navigate to
http://localhost:2121
nelel/
├── config/ # Database and authentication configuration
│ ├── database.js # MongoDB connection setup
│ └── passport.js # Passport authentication strategies
├── controllers/ # Business logic and request handlers
│ ├── auth.js # Authentication routes
│ └── home.js # Home page logic
├── models/ # Mongoose database schemas
│ ├── User.js # User schema
│ └── Transaction.js # Transaction schema
├── routes/ # Express route definitions
│ └── main.js # Main application routes
├── middleware/ # Custom Express middleware
│ └── auth.js # Authentication middleware
├── views/ # EJS templates for UI rendering
│ ├── index.ejs
│ ├── profile.ejs
│ ├── tracker.ejs
│ └── partials/ # Reusable template components
├── public/ # Static assets
│ ├── css/
│ └── imgs/
├── utils/ # Utility functions
│ └── taxCalculator.js
├── data/ # Seed data
│ └── states.json
├── server.js # Express app initialization
└── package.json # Project dependencies
- Navigate to the sign-up page
- Enter your email and password
- Your account is created and you're automatically logged in
- Go to the tracker dashboard
- Add a new transaction (income or expense)
- View your transaction history and financial summary
- Edit or delete transactions as needed
- Visit your profile page
- Update personal information and savings goals
- View your transaction statistics and net income calculations
npm test- Follows Node.js best practices
- MVC architectural pattern for clean separation of concerns
- Modular routing and controller logic for maintainability
- Create a new controller in
controllers/ - Define routes in
routes/main.js - Create EJS templates in
views/ - Update models if needed in
models/
Northflank provides free tier hosting with no cold starts—your server stays always-on.
-
Connect GitHub account:
- Go to Northflank Dashboard
- Click Create Project → GitHub
- Authorize Northflank and select your repository
-
Configure deployment:
- Build command:
npm install - Start command:
node server.js - Port:
2121 - Node version:
18
- Build command:
-
Set environment variables: In Northflank dashboard, go to Secrets and add:
DB_STRING=mongodb+srv://username:[email protected]/nelel SESSION_SECRET=your_generated_secret_here GROQ_API_KEY=your_groq_api_key PORT=2121 GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret CALLBACK_URL=https://yourdomain.com/auth/google/callback -
Deploy:
- Push to main branch
- Northflank automatically builds and deploys
- Access your live app at the provided domain
-
Create Dockerfile in project root:
FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm install --production COPY . . EXPOSE 2121 CMD ["node", "server.js"]
-
Build and push to Docker Hub:
docker build -t your-username/nelel:latest . docker push your-username/nelel:latest -
In Northflank dashboard:
- Create new service
- Select Docker Registry
- Paste image:
your-username/nelel:latest - Set environment variables
- Deploy
Current Limitations:
- Single-user only (no multi-user/family accounts)
- Fixed transaction categories (no custom categories)
- Monthly dashboard only (no historical trend analysis)
- No data export (CSV/PDF)
- US tax rates only (2025 brackets)
- No recurring transactions
- No 2FA
Planned Enhancements:
- Recurring/scheduled transactions
- Transaction history export
- Monthly/yearly spending trends
- Custom user categories
- Two-factor authentication (2FA)
- Budget alerts and enforcement
- Dark mode
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes and commit (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please ensure your code follows the existing style and includes appropriate comments.
This project is licensed under the MIT License – see the LICENSE file for details.
- Open an issue for bug reports
- Check existing issues before creating new ones
- Include steps to reproduce for bugs
Built with passion for personal finance management. Special thanks to the open-source community for the amazing tools and libraries.
