CloudSave is a comprehensive personal finance management application that helps users track their income, expenses, and financial insights. Built with a modern tech stack, it provides an intuitive interface for managing transactions, viewing financial reports, and gaining insights into spending patterns.
- User Authentication: Secure registration and login system with JWT-based authentication
- Dashboard Overview: Comprehensive view of your financial status at a glance
- Transaction Management:
- Add, edit, and delete transactions
- Categorize transactions as credit or debit
- View transaction history with filtering options
- Financial Insights:
- Visual charts and graphs for spending analysis
- Income vs. expense tracking
- Category-wise expenditure breakdown
- Reports: Generate detailed financial reports
- Settings: Personalize your account and preferences
- Email Notifications: Get notified about important financial activities
- Admin Dashboard: Manage and monitor all users
- User Management: View and manage user accounts
- System Analytics: Track overall platform usage
- React.js: Modern UI library for building interactive interfaces
- React Router: Client-side routing
- Lucide React: Beautiful, consistent icon library
- Framer Motion: Smooth animations and transitions
- Context API: State management
- CSS3: Custom styling with responsive design
- Node.js: JavaScript runtime environment
- Express.js: Fast, minimalist web framework
- MongoDB: NoSQL database for data storage
- Mongoose: MongoDB object modeling
- JWT (JSON Web Tokens): Secure authentication
- Bcrypt: Password hashing for security
- Nodemailer: Email sending functionality
- CORS: Cross-Origin Resource Sharing support
- Nodemon: Auto-restart server during development
- Webpack: Module bundler
- Babel: JavaScript compiler
- dotenv: Environment variable management
Before you begin, ensure you have the following installed:
- Node.js (v14 or higher)
- npm or yarn package manager
- MongoDB (local installation or MongoDB Atlas account)
- Git for version control
git clone https://github.com/devagarwal07/CloudSave.git
cd CloudSave# Navigate to the server directory
cd CloudSave/Server
# Install dependencies
npm install
# Create a .env file in the Server directory
touch .envAdd the following environment variables to your .env file:
PORT=5000
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key
EMAIL_USER=your_email@example.com
EMAIL_PASSWORD=your_email_password# Navigate to the frontend directory
cd ../Frontend
# Install dependencies
npm install-
Local MongoDB: Install MongoDB locally and start the service
mongod
-
MongoDB Atlas (Cloud):
- Create a free account at MongoDB Atlas
- Create a new cluster
- Get your connection string and add it to the
.envfile
Configure your email service credentials in the .env file to enable email notifications:
- Use Gmail, Outlook, or any SMTP service
- For Gmail, you must use an App Password (2-Step Verification required)
- Alternatively, configure OAuth 2.0 for more secure authentication
cd CloudSave/Server
npm run server
# or for development with auto-restart
npm run devThe server will start on http://localhost:5000
cd CloudSave/Frontend
npm run dev
# or
npm startThe frontend will typically start on http://localhost:3000 or http://localhost:5173 (Vite)
cd CloudSave/Server
npm startcd CloudSave/Frontend
npm run buildThis will create a production-optimized build in the dist folder.
CloudSave/
βββ CloudSave/
β βββ Server/
β β βββ src/
β β β βββ config/
β β β β βββ db.js # Database configuration
β β β βββ controllers/
β β β β βββ adminController.js # Admin operations
β β β β βββ user.js # User operations
β β β βββ middlewares/
β β β β βββ auth.js # Authentication middleware
β β β βββ models/
β β β β βββ admin.js # Admin schema
β β β β βββ transaction.js # Transaction schema
β β β βββ utils/
β β β βββ myMailer.js # Email utility
β β βββ server.js # Main server file
β β βββ package.json
β β βββ .env # Environment variables
β β
β βββ Frontend/
β βββ public/
β β βββ logo.png
β β βββ logo.svg
β βββ src/
β β βββ pages/
β β β βββ Dashboard/
β β β βββ Dashboard.jsx # Main dashboard
β β βββ components/
β β β βββ AfterLogin/
β β β βββ Overview/ # Financial overview
β β β βββ Transaction/ # Transaction management
β β β βββ Insights/ # Financial insights
β β β βββ Reports/ # Reports generation
β β β βββ Settings/ # User settings
β β βββ context/
β β β βββ StoreContext.js # Global state management
β β βββ index.css
β βββ package.json
β
βββ .gitignore
βββ README.md
- POST
/register- Register a new user - POST
/login- User login - GET
/profile- Get user profile (protected) - PUT
/profile- Update user profile (protected)
- GET
/- Get all transactions for logged-in user (protected) - POST
/- Create a new transaction (protected) - PUT
/:id- Update a transaction (protected) - DELETE
/:id- Delete a transaction (protected)
- POST
/login- Admin login - GET
/users- Get all users (admin only) - GET
/analytics- Get platform analytics (admin only)
- GET
/info- Get additional user information (protected)
- Password Hashing: All passwords are hashed using bcrypt before storage
- JWT Authentication: Secure token-based authentication
- Protected Routes: Middleware to protect sensitive endpoints
- CORS Configuration: Controlled cross-origin requests
- Input Validation: Server-side validation using validator library
- Environment Variables: Sensitive data stored in .env files
The main dashboard provides:
- Financial overview with key metrics
- Quick access to all features
- Responsive sidebar navigation
- User profile display
- Notification system
- Add income and expenses
- Categorize transactions
- Filter by date, type, or category
- Real-time balance updates
- Visual charts for spending patterns
- Category-wise analysis
- Monthly/yearly comparisons
- Exportable reports
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a new branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow the existing code style
- Write clear commit messages
- Add comments for complex logic
- Test your changes thoroughly
- Update documentation as needed
This project is open source and available under the MIT License.
- Dev Agarwal - @devagarwal07
- Thanks to all contributors who have helped shape CloudSave
- Built with love using open-source technologies
- Special thanks to the Node.js, React, and MongoDB communities
If you encounter any issues or have questions, please open an issue in the GitHub repository.
- Mobile application (React Native)
- Budget planning and alerts
- Multi-currency support
- Bank account integration
- Recurring transactions
- Advanced analytics with AI insights
- Export data to CSV/PDF
- Multi-language support
- Dark mode theme
Coming soon - Add screenshots of your application dashboard, transaction management, and reports
Made with β€οΈ by the CloudSave Team