A modern full-stack personal finance management application built with GraphQL, React, and Node.js. This project demonstrates advanced web development concepts including real-time data management, authentication, and responsive design.
+## 🚀 Live Demo
[Demo Link - (https://graphql-learn.onrender.com)]
+### 🔐 Authentication & Security
- User Registration & Login with secure password hashing
- Session Management using Express sessions with MongoDB store
- Protected Routes with GraphQL context-based authentication
- Passport.js Integration for robust authentication flow
- Transaction Tracking with detailed categorization
- Multiple Payment Types (Cash, Card)
- Smart Categories (Saving, Expense, Investment)
- Location Tracking for transaction history
- Date-based Organization with timestamps
- Interactive Charts using Chart.js and React-Chartjs-2
- Real-time Data Updates with GraphQL subscriptions
- Responsive Dashboard with modern UI/UX
- Data Export Capabilities
- Responsive Design that works on all devices
- Smooth Animations with Framer Motion
- Toast Notifications for user feedback
- Modern Styling with Tailwind CSS
- Dark/Light Mode support
- Node.js - Runtime environment
- Express.js - Web framework
- Apollo Server - GraphQL server implementation
- MongoDB - NoSQL database
- Passport.js - Authentication middleware
- bcryptjs - Password hashing
- React 19 - UI library with latest features
- Vite - Fast build tool and dev server
- Apollo Client - GraphQL client
- React Router - Client-side routing
- Tailwind CSS - Utility-first CSS framework
- Framer Motion - Animation library
- Chart.js - Data visualization
- React Hot Toast - Notification system
- ESLint - Code linting
- Nodemon - Development server with auto-reload
- PostCSS - CSS processing
graphql-learn/
├── backend/
│ ├── models/ # MongoDB schemas
│ │ ├── user.model.js # User data model
│ │ └── transaction.model.js # Transaction data model
│ ├── typeDefs/ # GraphQL schema definitions
│ │ ├── user.typeDef.js # User GraphQL types
│ │ ├── transaction.typeDef.js # Transaction GraphQL types
│ │ └── index.js # Merged type definitions
│ ├── resolvers/ # GraphQL resolvers
│ ├── passport/ # Authentication configuration
│ ├── db/ # Database connection utilities
│ ├── dummyData/ # Sample data for development
│ └── index.js # Main server file
├── frontend/
│ ├── src/
│ │ ├── components/ # Reusable React components
│ │ ├── pages/ # Page components
│ │ │ ├── HomePage.jsx # Dashboard page
│ │ │ ├── LoginPage.jsx # Authentication page
│ │ │ ├── SignUpPage.jsx # Registration page
│ │ │ └── TransactionPage.jsx # Transaction details
│ │ ├── graphql/ # GraphQL queries and mutations
│ │ ├── utils/ # Utility functions
│ │ └── assets/ # Static assets
│ ├── public/ # Public assets
│ └── package.json # Frontend dependencies
└── package.json # Root project configuration
- Node.js (v18 or higher)
- MongoDB (local or cloud instance)
- npm or yarn package manager
-
Clone the repository
git clone https://github.com/yourusername/graphql-finance-manager.git cd graphql-finance-manager -
Install dependencies
# Install root dependencies npm install # Install frontend dependencies npm install --prefix frontend
-
Environment Setup Create a
.envfile in the root directory:MONGO_URI=your_mongodb_connection_string SESSION_SECRET=your_session_secret_key NODE_ENV=development
-
Database Setup
- Ensure MongoDB is running
- The application will automatically create collections on first run
-
Run the application
# Development mode npm run dev # Production build npm run build npm start
-
Access the application
- Frontend: http://localhost:3000
- GraphQL Playground: http://localhost:4000/graphql
# Development
npm run dev # Start development server
npm run build # Build for production
npm start # Start production server
# Frontend specific
npm run dev --prefix frontend # Start frontend dev server
npm run build --prefix frontend # Build frontend
npm run lint --prefix frontend # Lint frontend code# Build the entire application
npm run build
# Start production server
npm run startNUT INORN
- GitHub: @inornnut01
- LinkedIn: Nut Inorn
- Portfolio:
- Apollo GraphQL team for excellent documentation
- React team for the amazing framework
- Tailwind CSS for the utility-first approach
- MongoDB team for the robust database solution
⭐ Star this repository if you found it helpful!