Skip to content

goagain/ircc-tracker

Repository files navigation

Goagain's Canada IRCC Tracker

GitHub Stars Latest Release Live Site

A web application for tracking Canada IRCC (Immigration, Refugees and Citizenship Canada) status updates.

Features

  • 🔐 AES encrypted credential storage
  • 📊 MongoDB database storage
  • ⏰ Automated checking every 10 minutes
  • 📧 Email notifications for status changes
  • 🌐 React frontend interface
  • 👥 User permission management (Admin/Regular users)
  • 🔄 Multi-threaded background worker process

Technology Stack

Backend

  • Python 3.13+
  • Flask (Web framework)
  • MongoDB (Database)
  • Cryptography (AES encryption)
  • APScheduler (Scheduled tasks)
  • SMTP (Email sending)

Frontend

  • React 18
  • Axios (API requests)
  • Bootstrap 5 (UI framework)
  • React Router (Routing)

Project Structure

ircc-tracker/
├── backend/
│   ├── app.py              # Main application entry
│   ├── models/             # Data models
│   ├── routes/             # API routes
│   ├── services/           # Business logic
│   ├── utils/              # Utility functions
│   └── config.py           # Configuration file
├── frontend/
│   ├── src/
│   ├── public/
│   └── package.json
├── requirements.txt
└── README.md

Installation and Setup

Backend Setup

  1. Install Python dependencies:
pip install -r requirements.txt
  1. Configure environment variables:
# MongoDB Configuration
MONGODB_URL=mongodb://localhost:27017/  # MongoDB connection URL
DATABASE_NAME=ircc_tracker              # Database name

# Flask Configuration
SECRET_KEY=your-secret-key              # Flask secret key for session management
DEBUG=True                              # Debug mode (set to False in production)

# AES Encryption
ENCRYPTION_KEY=your-32-byte-key         # 32-byte key for AES encryption

# Email Configuration
SMTP_SERVER=smtp.gmail.com              # SMTP server address
SMTP_PORT=587                           # SMTP server port
[email protected]      # SMTP username
SMTP_PASSWORD=your-app-password         # SMTP password (use app password for Gmail)
[email protected]         # Sender email address

# Scheduled Task Configuration
CHECK_INTERVAL_MINUTES=10               # Interval for checking IRCC status

# JWT Configuration
JWT_SECRET_KEY=your-jwt-secret          # Secret key for JWT tokens
JWT_EXPIRATION_HOURS=24                 # JWT token expiration time

# Admin Configuration
[email protected]           # Admin user email
ADMIN_PASSWORD=secure-password          # Admin user password

# Google Analytics Configuration
GOOGLE_ANALYTICS_ID=G-F1T3XXXXX         # Optional. Google Analytics tracking ID

# IRCC URLs
IRCC_CITIZEN_CHECK_URL=https://tracker-suivi.apps.cic.gc.ca/en/login
IRCC_IMMIGRANT_CHECK_URL=https://ircc-tracker-suivi.apps.cic.gc.ca/en/login
  1. Start backend service:
cd backend
python app.py

Frontend Setup

  1. Install Node.js dependencies:
cd frontend
npm install
  1. Start frontend development server:
npm start

Docker Deployment

  1. Build the Docker image:
docker build -t ircc-tracker .
  1. Run the container:
docker run -d \
  -p 5000:5000 \
  -e MONGODB_URL=mongodb://mongodb:27017/ircc_tracker \
  -e SMTP_SERVER=smtp.gmail.com \
  -e SMTP_PORT=587 \
  -e [email protected] \
  -e SMTP_PASSWORD=your-app-password \
  -e [email protected] \
  -e SECRET_KEY=your-secret-key \
  -e [email protected] \
  -e ADMIN_PASSWORD=admin-password \
  --name ircc-tracker \
  ircc-tracker

Or use Docker Compose:

version: '3.8'
services:
  app:
    image: ircc-tracker
    ports:
      - "5000:5000"
    environment:
      - MONGODB_URL=mongodb://mongodb:27017/ircc_tracker
      - SMTP_SERVER=smtp.gmail.com
      - SMTP_PORT=587
      - SMTP_USERNAME=${SMTP_USERNAME}
      - SMTP_PASSWORD=${SMTP_PASSWORD}
      - FROM_EMAIL=${FROM_EMAIL}
      - SECRET_KEY=${SECRET_KEY}
      - ADMIN_EMAIL=${ADMIN_EMAIL}
      - ADMIN_PASSWORD=${ADMIN_PASSWORD}
    depends_on:
      - mongodb
    restart: unless-stopped

  mongodb:
    image: mongo:latest
    ports:
      - "27017:27017"
    volumes:
      - mongodb_data:/data/db
    restart: unless-stopped

volumes:
  mongodb_data:

License

This project is licensed under the MIT License with additional conditions:

  1. The GitHub star button and Buy Me a Coffee button must remain intact and functional in all copies of the Software.
  2. The name "Goagain" must be preserved in all copies of the Software.

See the LICENSE file for full details.

Contributing

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

Support

If you find this project helpful, please consider:

  • Star this project

  • Sponsor via Buy Me a Coffee

  • Sponsor via GitHub Sponsor

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published