Skip to content

About

An intuitive web app for tracking and managing cryptocurrency portfolios. Supports manual transaction entry and bulk CSV/JSON uploads from exchanges like Binance and KuCoin, with real-time P&L tracking and analytics.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Latest commit

Β 

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“Š QuickReport – Cryptocurrency Portfolio Tracker

GitHub last commit GitHub language count GitHub top language Website

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]


πŸ“Œ Overview

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.


✨ Key Features

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]

πŸ› οΈ Tech Stack

Frontend

  • Templating: EJS (Embedded JavaScript)[reference:11]
  • Styling: CSS[reference:12]
  • JavaScript: Vanilla JS for client-side interactivity[reference:13]

Backend

  • 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]

Cloud Services

  • File Storage: Cloudinary (free tier: 25GB)[reference:18][reference:19]
  • Database: MongoDB Atlas (optional)[reference:20]

APIs Integrated


πŸ“ Project Structure

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

πŸš€ Getting Started

Prerequisites

  • Node.js – v14 or higher[reference:34]
  • MongoDB – local instance or MongoDB Atlas[reference:35]
  • Cloudinary account – free tier available[reference:36]

Environment Variables

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 .env file. Add it to .gitignore to keep your secrets safe.

Installation

  1. Clone the repository

    git clone git@github.com:pankajpareek026/quickreport.git
    cd quickreport[reference:38]
  2. Install dependencies

    npm install[reference:39]
  3. Set up environment variables

    • Create a .env file in the root directory
    • Add all required variables (see table above)[reference:40]
  4. 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
  5. Configure Cloudinary[reference:43]

  6. Start the server

    npm start
    # or for development with auto-reload:
    npm run dev[reference:44]
  7. Access the application

    • Open your browser and navigate to http://localhost:7000 (or your configured PORT)

πŸ“– Documentation


πŸ”’ Security Features

  • 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]

πŸ“Έ Screenshots

  • 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]

πŸ“¦ Deployment

This project can be deployed to any Node.js hosting platform.

Deploy on Render / Cyclic / Heroku

  1. Push your code to a GitHub repository
  2. Set the required environment variables in your hosting platform
  3. Use the following commands:
    npm install
    npm start

Live Demo

The application is live at: quickreport.cyclic.app[reference:57]


🀝 Contributing

Contributions are welcome! If you'd like to improve this project:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please ensure your code adheres to the existing style and includes relevant documentation updates.


πŸ“„ License

This project is licensed under the ISC License[reference:58].


πŸ‘€ Author

Pankaj Pareek[reference:59]


πŸ™ Acknowledgements


🏷️ Topics

nodejs javascript express mongodb mongoose jwt-authentication cryptocurrency portfolio-tracker binance-api coingecko-api coinmarketcap-api cloudinary ejs css[reference:60]

About

An intuitive web app for tracking and managing cryptocurrency portfolios. Supports manual transaction entry and bulk CSV/JSON uploads from exchanges like Binance and KuCoin, with real-time P&L tracking and analytics.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages