An intuitive and comprehensive web app for managing cryptocurrency portfolios.
Track the performance and profitability of your digital assets across exchanges like Binance and KuCoin β with real-time data updates, powerful analytics, and a user-friendly interface.[reference:0]
π Live Demo: quickreport.cyclic.app[reference:1]
QuickReport simplifies cryptocurrency portfolio management by allowing users to:
- Manually insert each transaction (Buy/Sell)
- Upload transaction files (CSV/JSON) β the system automatically parses transactions and displays them on your dashboard[reference:2]
Whether you're a casual investor or a active trader, QuickReport gives you clear visibility into your portfolio's performance.
| Feature | Description |
|---|---|
| π User Authentication | Secure JWT-based authentication with bcrypt password hashing[reference:3] |
| π Manual Transaction Entry | Add Buy/Sell transactions manually with full control[reference:4] |
| π€ Bulk File Upload | Upload CSV/JSON files from Binance or KuCoin β automatic parsing[reference:5] |
| π Real-time Portfolio Tracking | Live updates on your portfolio performance[reference:6] |
| π° P&L Calculations | Track profit and loss across all your assets[reference:7] |
| π¦ Funding Management | Deposit and withdraw funds with full tracking[reference:8] |
| βοΈ Cloud File Storage | Secure file uploads via Cloudinary[reference:9] |
| π Interactive Dashboard | Visual analytics and portfolio overview[reference:10] |
- Templating: EJS (Embedded JavaScript)[reference:11]
- Styling: CSS[reference:12]
- JavaScript: Vanilla JS for client-side interactivity[reference:13]
- Runtime: Node.js[reference:14]
- Framework: Express.js[reference:15]
- Database: MongoDB with Mongoose ODM[reference:16]
- Authentication: JWT with bcrypt password hashing[reference:17]
- File Storage: Cloudinary (free tier: 25GB)[reference:18][reference:19]
- Database: MongoDB Atlas (optional)[reference:20]
- CoinMarketCap API β Market data[reference:21]
- CoinGecko API β Cryptocurrency data[reference:22]
- Binance API β Exchange integration[reference:23]
quickreport/
βββ config/ # Configuration files
β βββ database.js # MongoDB connection
β βββ cloudinary.js # Cloudinary setup[reference:24]
βββ models/ # Mongoose models
β βββ User.js # User schema
β βββ Transaction.js # Transaction schema
β βββ Funding.js # Funding schema[reference:25]
βββ controllers/ # Business logic
β βββ authController.js # Authentication handlers
β βββ portfolioController.js # Portfolio management
β βββ fundingController.js # Funding operations
β βββ dashboardController.js # Dashboard data
β βββ uploadController.js # File upload handling[reference:26]
βββ routes/ # Route definitions
β βββ authRoutes.js # Auth endpoints
β βββ portfolioRoutes.js # Portfolio endpoints
β βββ fundingRoutes.js # Funding endpoints
β βββ dashboardRoutes.js # Dashboard endpoints
β βββ uploadRoutes.js # Upload endpoints
β βββ indexRoutes.js # Main routes[reference:27]
βββ middleware/ # Custom middleware
β βββ auth.js # JWT authentication
β βββ validation.js # Input validation[reference:28]
βββ views/ # EJS templates[reference:29]
βββ services/ # External service integrations[reference:30]
βββ public/ # Static assets[reference:31]
βββ Images/ # Screenshots and assets[reference:32]
βββ app.js # Main application entry[reference:33]
βββ .env # Environment variables (create this)
βββ package.json # Project dependencies
βββ README.md # This file
- Node.js β v14 or higher[reference:34]
- MongoDB β local instance or MongoDB Atlas[reference:35]
- Cloudinary account β free tier available[reference:36]
Create a .env file in the root directory with the following variables[reference:37]:
| Variable | Description | Example |
|---|---|---|
PORT |
Server port | 7000 |
MONGODB_URI |
MongoDB connection string | mongodb://localhost:27017/quickreport |
JWT_SECRET |
Secret key for signing JWT tokens | your_secure_jwt_secret_key |
SESSION_SECRET |
Secret key for sessions | your_secure_session_secret_key |
EMAIL_USER |
Email for verification | your_email@gmail.com |
EMAIL_PASS |
Email app password | your_app_password |
CMC_API_KEY |
CoinMarketCap API key (optional) | your_coinmarketcap_api_key |
CLOUDINARY_CLOUD_NAME |
Cloudinary cloud name | your_cloud_name |
CLOUDINARY_API_KEY |
Cloudinary API key | your_api_key |
CLOUDINARY_API_SECRET |
Cloudinary API secret | your_api_secret |
β οΈ Never commit the.envfile. Add it to.gitignoreto keep your secrets safe.
-
Clone the repository
git clone git@github.com:pankajpareek026/quickreport.git cd quickreport[reference:38] -
Install dependencies
npm install[reference:39]
-
Set up environment variables
- Create a
.envfile in the root directory - Add all required variables (see table above)[reference:40]
- Create a
-
Configure MongoDB
Option 1: Local MongoDB[reference:41]
- Install MongoDB locally
- Start MongoDB service
- Use:
mongodb://localhost:27017/quickreport
Option 2: MongoDB Atlas (Recommended)[reference:42]
- Create a free account at MongoDB Atlas
- Create a cluster
- Get your connection string
- Use:
mongodb+srv://username:password@cluster.mongodb.net/quickreport
-
Configure Cloudinary[reference:43]
- Sign up at Cloudinary (free tier: 25GB)
- Get credentials from your Dashboard
- Add to
.envfile - See CLOUDINARY_SETUP.md for detailed instructions
-
Start the server
npm start # or for development with auto-reload: npm run dev[reference:44] -
Access the application
- Open your browser and navigate to
http://localhost:7000(or your configured PORT)
- Open your browser and navigate to
- Migration Guide β Complete migration documentation[reference:45]
- Cloudinary Setup β Cloudinary configuration guide[reference:46]
- Changelog β Version history and changes[reference:47]
- Password hashing β bcrypt for secure password storage[reference:48]
- JWT-based authentication β Stateless, secure token-based auth[reference:49]
- Environment variable configuration β All secrets stored in
.env[reference:50] - Input validation β All user inputs validated before processing[reference:51]
- Secure file uploads β Validated and sanitized file handling[reference:52]
- Home Page β Landing and overview[reference:53]
- Dashboard β Portfolio performance and analytics[reference:54]
- Transactions Detail β Complete transaction history[reference:55]
- User Profile β Account management[reference:56]
This project can be deployed to any Node.js hosting platform.
- Push your code to a GitHub repository
- Set the required environment variables in your hosting platform
- Use the following commands:
npm install npm start
The application is live at: quickreport.cyclic.app[reference:57]
Contributions are welcome! If you'd like to improve this project:
- 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
Please ensure your code adheres to the existing style and includes relevant documentation updates.
This project is licensed under the ISC License[reference:58].
Pankaj Pareek[reference:59]
- GitHub: pankajpareek026
- Project Link: https://github.com/pankajpareek026/quickreport
- Node.js β JavaScript runtime
- Express.js β Web framework
- MongoDB β Database
- Mongoose β MongoDB ODM
- JWT β JSON Web Tokens
- Cloudinary β Cloud file storage
- CoinMarketCap API β Market data
- CoinGecko API β Crypto data
- Binance API β Exchange integration
nodejs javascript express mongodb mongoose jwt-authentication cryptocurrency portfolio-tracker binance-api coingecko-api coinmarketcap-api cloudinary ejs css[reference:60]