A comprehensive personal finance management application built with React (TypeScript) frontend and Flask backend. FinLogix helps users track expenses, manage budgets, analyze spending patterns, and make informed financial decisions with AI-powered insights.
- User Authentication & Authorization: Secure login/registration with JWT tokens
- Transaction Management: Add, edit, and categorize income/expense transactions
- Real-time Dashboard: Live updates using WebSocket connections
- Financial Analytics: Visual charts and spending pattern analysis
- AI-Powered Insights: Smart financial advice using Gemini AI
- Audio Memo Support: Record and attach voice memos to transactions
- Multi-category Support: Comprehensive expense and income categorization
- Responsive Design: Mobile-first responsive UI with Tailwind CSS
- Role-based Access: User and Admin role management
- Data Visualization: Interactive charts with Chart.js
- Profile Management: User profile and financial preferences
- Real-time Notifications: Live updates and alerts
- Search & Filter: Advanced transaction filtering and search
- Export/Import: Data export capabilities
- React 19 with TypeScript
- React Router Dom for routing
- Tailwind CSS for styling
- Chart.js with react-chartjs-2 for data visualization
- Axios for API communication
- Context API for state management
- Flask 3.0 with Python
- SQLAlchemy for ORM
- PostgreSQL database
- Flask-JWT-Extended for authentication
- Flask-SocketIO for real-time communication
- Gemini AI API for financial insights
- Flask-CORS for cross-origin requests
- TypeScript for type safety
- ESLint for code linting
- Jest for testing
- Webpack (via Create React App)
FinLogix/
├── backend/
│ ├── app/
│ │ ├── __init__.py
│ │ ├── config.py
│ │ ├── socketio_events.py
│ │ ├── models/
│ │ │ ├── user.py
│ │ │ └── transaction.py
│ │ ├── routes/
│ │ │ ├── auth.py
│ │ │ ├── dashboard.py
│ │ │ ├── transaction.py
│ │ │ ├── admin.py
│ │ │ └── ai.py
│ │ └── utils/
│ │ └── auth_utils.py
│ ├── main.py
│ ├── requirements.txt
│ ├── create_db.py
│ └── audio_memos/
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ │ ├── Navbar.tsx
│ │ │ ├── TransactionList.tsx
│ │ │ ├── TransactionModal.tsx
│ │ │ ├── AudioRecorder.tsx
│ │ │ └── ...
│ │ ├── pages/
│ │ │ ├── Dashboard.tsx
│ │ │ ├── Transactions.tsx
│ │ │ ├── Login.tsx
│ │ │ └── ...
│ │ ├── contexts/
│ │ │ └── AuthContext.tsx
│ │ ├── services/
│ │ │ ├── api.ts
│ │ │ ├── authService.ts
│ │ │ └── ...
│ │ └── types/
│ │ ├── user.ts
│ │ └── transaction.ts
│ ├── package.json
│ └── tailwind.config.js
└── README.md
Before running this project, make sure you have the following installed:
- Node.js (v16 or higher)
- Python (v3.8 or higher)
- PostgreSQL (v12 or higher)
- npm or yarn
- pip (Python package manager)
git clone https://github.com/yourusername/finlogix.git
cd finlogix- Install PostgreSQL and create a database:
CREATE DATABASE finlogix_dev;
CREATE USER postgres WITH ENCRYPTED PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE finlogix_dev TO postgres;- Update the database connection string in
backend/app/config.py
- Navigate to the backend directory:
cd backend- Create a virtual environment:
python -m venv venv- Activate the virtual environment:
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activate- Install dependencies:
pip install -r requirements.txt- Set up environment variables:
Create a
.envfile in the backend directory:
SECRET_KEY=your-super-secret-key-here
JWT_SECRET_KEY=your-jwt-secret-key-here
DATABASE_URL=postgresql://postgres:your_password@localhost/finlogix_dev
GEMINI_API_KEY=your-gemini-api-key
FLASK_ENV=development- Initialize the database:
python create_db.py- Run the backend server:
python main.pyThe backend will start on http://localhost:5000
- Navigate to the frontend directory:
cd frontend- Install dependencies:
npm install- Start the development server:
npm startThe frontend will start on http://localhost:3000
- Navigate to
http://localhost:3000 - Click "Sign Up" to create a new account
- Fill in your details and register
- Login with your credentials
- Add Transaction: Click "Add Transaction" from the dashboard
- Categories: Choose from predefined income/expense categories
- Audio Memos: Record voice notes for transactions
- Edit/Delete: Manage existing transactions from the transactions page
- Overview: View total income, expenses, and balance
- Charts: Analyze spending patterns with interactive charts
- Recent Transactions: Quick view of latest financial activities
- AI Insights: Get personalized financial advice
- User Profile: Update personal information
- Financial Preferences: Set budget goals and categories
- Security: Change password and security settings
POST /api/auth/register- User registrationPOST /api/auth/login- User loginPOST /api/auth/logout- User logoutGET /api/auth/profile- Get user profile
GET /api/transactions- Get all transactionsPOST /api/transactions- Create new transactionPUT /api/transactions/:id- Update transactionDELETE /api/transactions/:id- Delete transaction
GET /api/dashboard/summary- Get dashboard summaryGET /api/dashboard/charts- Get chart data
POST /api/ai/analyze- Get AI financial analysisPOST /api/ai/advice- Get personalized advice
- Modern Design: Clean, professional interface with Tailwind CSS
- Dark Theme: Elegant dark mode for better user experience
- Responsive Layout: Mobile-first design that works on all devices
- Interactive Charts: Dynamic data visualization
- Real-time Updates: Live data updates via WebSocket
- Loading States: Smooth loading animations and states
- Error Handling: User-friendly error messages and validation
- JWT Authentication: Secure token-based authentication
- Password Hashing: Bcrypt password encryption
- Input Validation: Server-side and client-side validation
- CORS Protection: Cross-origin request security
- SQL Injection Prevention: Parameterized queries with SQLAlchemy
- XSS Protection: Input sanitization and output encoding
- id (Primary Key)
- name, email, password_hash
- role (user/admin)
- financial_profile (income_type, monthly_income, etc.)
- created_at, updated_at
- id (Primary Key)
- user_id (Foreign Key)
- amount, type (income/expense)
- category, description
- audio_memo_path
- created_at, updated_at
cd frontend
npm testcd backend
python -m pytest tests/cd frontend
npm run build- Set environment variables for production
- Use a production WSGI server like Gunicorn:
gunicorn -w 4 -b 0.0.0.0:5000 main:app# Build and run with Docker Compose
docker-compose up -d- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support, email support@finlogix.com or open an issue on GitHub.
- Mobile App: React Native mobile application
- Bank Integration: Connect with bank accounts via APIs
- Investment Tracking: Stock and crypto portfolio management
- Goal Setting: Financial goals and milestone tracking
- Notification System: Email/SMS notifications for budgets
- Multi-currency Support: Support for different currencies
- Data Export: CSV/PDF export functionality
- Automated Categorization: AI-powered transaction categorization
- v1.0.0 - Initial release with core features
- v1.1.0 - Added AI insights and audio memos
- v1.2.0 - Enhanced dashboard and charts
- v1.3.0 - Real-time updates with WebSocket
Built with ❤️ by the FinLogix Team
For more information, visit our documentation or check out our demo.