A web application for tracking Canada IRCC (Immigration, Refugees and Citizenship Canada) status updates.
- 🔐 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
- Python 3.13+
- Flask (Web framework)
- MongoDB (Database)
- Cryptography (AES encryption)
- APScheduler (Scheduled tasks)
- SMTP (Email sending)
- React 18
- Axios (API requests)
- Bootstrap 5 (UI framework)
- React Router (Routing)
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
- Install Python dependencies:
pip install -r requirements.txt- 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- Start backend service:
cd backend
python app.py- Install Node.js dependencies:
cd frontend
npm install- Start frontend development server:
npm start- Build the Docker image:
docker build -t ircc-tracker .- 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-trackerOr 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:This project is licensed under the MIT License with additional conditions:
- The GitHub star button and Buy Me a Coffee button must remain intact and functional in all copies of the Software.
- The name "Goagain" must be preserved in all copies of the Software.
See the LICENSE file for full details.
- Fork the repository
- Create your feature branch (git checkout -b feature/amazing-feature)
- Commit your changes (git commit -m 'Add some amazing feature')
- Push to the branch (git push origin feature/amazing-feature)
- Open a Pull Request
If you find this project helpful, please consider: