Skip to content

Repository files navigation

MigrateIQ 90-Day Journey Tracker 🚀

A full-stack MERN application to track your 90-day journey building the MigrateIQ SaaS product.

License Node React MongoDB

✨ Features

  • 📅 90-Day Calendar - Visual overview of your entire journey
  • ✅ Daily Task Tracking - Check off tasks with automatic progress saving
  • 🔥 GitHub Streak Tracker - Never break the chain!
  • 📊 Detailed Statistics - Charts, achievements, and analytics
  • 🎯 Weekly Milestones - 13-week roadmap with goals
  • 🎧 Daily Podcasts - Curated podcast recommendations
  • 💪 Health Tracking - Gym, sleep, water, and mood
  • 🔐 User Authentication - Secure JWT-based auth
  • 📱 Responsive Design - Works on desktop and mobile

🏗️ Tech Stack

Frontend:

  • React 18 with Vite
  • TailwindCSS for styling
  • Recharts for data visualization
  • React Router for navigation
  • Axios for API calls

Backend:

  • Node.js with Express
  • MongoDB with Mongoose
  • JWT for authentication
  • bcryptjs for password hashing

DevOps:

  • Docker & Docker Compose
  • Nginx for production serving

🚀 Quick Start

Option 1: Local Development (Recommended for Development)

Prerequisites

  • Node.js 20+
  • MongoDB (local or Atlas)
  • npm or yarn

1. Clone the repository

git clone https://github.com/yourusername/migrateiq-tracker.git
cd migrateiq-tracker

2. Set up the Backend

cd backend

# Install dependencies
npm install

# Create environment file
cp .env.example .env

# Edit .env with your settings:
# - MONGODB_URI: Your MongoDB connection string
# - JWT_SECRET: A random secret string (use: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))")

# Start the backend (development mode with hot reload)
npm run dev

3. Set up the Frontend

# Open a new terminal
cd frontend

# Install dependencies
npm install

# Start the frontend
npm run dev

4. Access the app


Option 2: Docker Development (Quick Database Setup)

Use Docker for MongoDB only, run Node.js locally:

# Start MongoDB with Docker
docker-compose -f docker-compose.dev.yml up -d

# MongoDB will be available at: mongodb://admin:devpassword@localhost:27017
# Mongo Express GUI at: http://localhost:8081 (admin/admin)

# Then run backend and frontend locally as shown in Option 1
# Use this MongoDB URI in your backend .env:
MONGODB_URI=mongodb://admin:devpassword@localhost:27017/migrateiq-tracker?authSource=admin

Option 3: Full Docker Deployment (Production)

Deploy everything with Docker:

# Create production environment file
cat > .env << EOF
MONGO_ROOT_USERNAME=admin
MONGO_ROOT_PASSWORD=your-secure-password
JWT_SECRET=$(node -e "console.log(require('crypto').randomBytes(32).toString('hex'))")
FRONTEND_URL=http://your-domain.com
EOF

# Build and start all services
docker-compose up -d --build

# Check status
docker-compose ps

# View logs
docker-compose logs -f

Access at: http://localhost (or your domain)


☁️ Cloud Deployment Options

Option A: Railway (Easiest - Recommended)

Railway provides free tier and easy deployment.

  1. Create Railway account: https://railway.app

  2. Deploy MongoDB:

    • New Project → Provision MongoDB
    • Copy the connection string
  3. Deploy Backend:

    • New Project → Deploy from GitHub repo
    • Select the backend folder as root
    • Add environment variables:
      MONGODB_URI=<your-railway-mongodb-uri>
      JWT_SECRET=<generate-random-string>
      FRONTEND_URL=<your-frontend-url>
      
  4. Deploy Frontend:

    • New Project → Deploy from GitHub repo
    • Select the frontend folder as root
    • Add environment variable:
      VITE_API_URL=<your-backend-url>/api
      

Option B: Render

  1. Create Render account: https://render.com

  2. Deploy MongoDB: Use MongoDB Atlas (free tier)

  3. Deploy Backend (Web Service):

    • New → Web Service
    • Connect your GitHub repo
    • Root directory: backend
    • Build command: npm install
    • Start command: npm start
    • Add environment variables
  4. Deploy Frontend (Static Site):

    • New → Static Site
    • Connect your GitHub repo
    • Root directory: frontend
    • Build command: npm install && npm run build
    • Publish directory: dist

Option C: DigitalOcean App Platform

  1. Create DigitalOcean account
  2. Go to App Platform → Create App
  3. Connect GitHub repository
  4. Configure:
    • Backend as Web Service
    • Frontend as Static Site
    • Add MongoDB as managed database (or use Atlas)

Option D: VPS Deployment (Full Control)

For DigitalOcean Droplet, AWS EC2, Linode, etc:

# SSH into your server
ssh user@your-server-ip

# Install Docker
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

# Clone and deploy
git clone https://github.com/yourusername/migrateiq-tracker.git
cd migrateiq-tracker

# Create .env file with your settings
nano .env

# Deploy with Docker Compose
docker-compose up -d --build

# Set up Nginx reverse proxy with SSL (optional but recommended)
sudo apt install nginx certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com

📁 Project Structure

migrateiq-tracker/
├── backend/
│   ├── config/
│   │   └── db.js              # MongoDB connection
│   ├── middleware/
│   │   └── auth.js            # JWT authentication
│   ├── models/
│   │   ├── User.js            # User model
│   │   └── DayProgress.js     # Daily progress model
│   ├── routes/
│   │   ├── auth.js            # Auth routes
│   │   ├── progress.js        # Progress CRUD routes
│   │   └── stats.js           # Statistics routes
│   ├── server.js              # Express server
│   ├── Dockerfile
│   └── package.json
│
├── frontend/
│   ├── src/
│   │   ├── components/
│   │   │   └── Layout.jsx     # Main layout with sidebar
│   │   ├── context/
│   │   │   ├── AuthContext.jsx
│   │   │   └── ProgressContext.jsx
│   │   ├── pages/
│   │   │   ├── Login.jsx
│   │   │   ├── Register.jsx
│   │   │   ├── Dashboard.jsx
│   │   │   ├── Today.jsx
│   │   │   ├── Calendar.jsx
│   │   │   ├── Milestones.jsx
│   │   │   ├── Stats.jsx
│   │   │   └── Settings.jsx
│   │   ├── utils/
│   │   │   ├── api.js         # Axios configuration
│   │   │   └── constants.js   # Schedules, rules, etc.
│   │   ├── App.jsx
│   │   ├── main.jsx
│   │   └── index.css
│   ├── Dockerfile
│   ├── nginx.conf
│   ├── vite.config.js
│   ├── tailwind.config.js
│   └── package.json
│
├── docker-compose.yml          # Production deployment
├── docker-compose.dev.yml      # Development (MongoDB only)
└── README.md

🔧 Environment Variables

Backend (.env)

PORT=5000
NODE_ENV=development
MONGODB_URI=mongodb://localhost:27017/migrateiq-tracker
JWT_SECRET=your-secret-key
FRONTEND_URL=http://localhost:3000

Frontend (.env)

VITE_API_URL=/api

📱 API Endpoints

Authentication

  • POST /api/auth/register - Register new user
  • POST /api/auth/login - Login user
  • GET /api/auth/me - Get current user
  • PUT /api/auth/settings - Update settings

Progress

  • GET /api/progress - Get all progress
  • GET /api/progress/:date - Get progress for date
  • POST /api/progress/:date - Create/update progress
  • PATCH /api/progress/:date/task - Toggle task
  • PATCH /api/progress/:date/github - Toggle GitHub commit
  • PATCH /api/progress/:date/quick - Quick updates

Statistics

  • GET /api/stats/overview - Get overview stats
  • GET /api/stats/weekly - Get weekly breakdown
  • GET /api/stats/heatmap - Get heatmap data
  • GET /api/stats/achievements - Get achievements

🎯 Features Breakdown

Dashboard

  • Welcome message with current day
  • Quick stats (day, streak, commits, hours)
  • Today's status cards
  • Today's podcast recommendation
  • Weekly focus/milestone

Today's Tasks

  • Full daily schedule with checkboxes
  • GitHub commit toggle
  • Quick toggles (gym, LinkedIn, podcast)
  • Water intake tracker
  • Sleep hours slider
  • Mood selector
  • Daily notes (wins, blockers)

Calendar

  • 90-day grid view
  • Week indicators
  • GitHub commit indicators
  • Completion dots
  • Click to view/edit any day

Milestones

  • 13-week roadmap
  • Progress indicators
  • Current week highlight
  • Phase summaries

Statistics

  • Hours distribution pie chart
  • Weekly progress bar chart
  • Health metrics
  • Achievements system
  • Mood distribution

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.


📄 License

MIT License - feel free to use this for your own journey!


🙏 Acknowledgments

Built for the 90-day journey to launch MigrateIQ - an Oracle to PostgreSQL migration assessment tool.

Good luck with your journey! 🚀

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages