Overview
This guide covers everything you need to install and configure Checawaa, from local development setup to production deployment. Choose the path that fits your needs.System Requirements
Minimum Requirements
- Python: 3.7 or higher
- Memory: 512 MB RAM (1 GB recommended)
- Storage: 100 MB free space
- Browser: Modern browser with GPS support (Chrome, Firefox, Safari, Edge)
Supported Platforms
Linux
Ubuntu, Debian, CentOS, RHEL
macOS
macOS 10.14 or later
Windows
Windows 10/11, Windows Server
Installation Methods
- Local Development
- Production Deployment
Perfect for testing, development, and customization.
Local Development Setup
Step 1: Clone the Repository
Step 2: Create Virtual Environment
Using a virtual environment isolates Checawaa’s dependencies from your system Python:When activated, your terminal prompt will show
(venv) at the beginning. This indicates all Python packages will be installed in this isolated environment.Step 3: Install Dependencies
Checawaa’s dependencies are listed inrequirements.txt:
requirements.txt
The
requirements.txt is minimal. The actual dependencies in app.py include: flask, flask-login, flask-mail, apscheduler, and reportlab. You’ll need to install all of them.requirements.txt:
requirements.txt
Step 4: Configure Environment Variables
Instead of hardcoding credentials inapp.py, use environment variables for security:
Step 5: Initialize Data Directory
Checawaa stores data in JSON files within thedata/ directory:
The application auto-creates these files on first run if they don’t exist (see
app.py:28-39). Manual creation gives you control over initial users.Step 6: Configure Gmail App Password
To send automated reminder emails, you need a Gmail App Password:Enable 2-Step Verification
- Go to Google Account Security
- Click “2-Step Verification”
- Follow the prompts to enable it
Generate App Password
- In Security settings, scroll to “App passwords”
- Click “App passwords” (you may need to sign in again)
- Select “Mail” and “Other (Custom name)”
- Name it “Checawaa” or similar
- Click “Generate”
Step 7: Run the Development Server
Start Checawaa:Step 8: Verify Installation
Test the login page
Navigate to
http://localhost:5000/loginYou should see the login form without errors.Test employee login
Log in with:
- Username:
john - Password:
john123
Test admin login
Log out, then log in with:
- Username:
admin - Password:
admin123
/monitor).Production Deployment
Deployment Checklist
Before deploying to production:Security hardening
- Change all default passwords
- Use strong
SECRET_KEY(generate withpython -c "import secrets; print(secrets.token_hex(32))") - Store credentials in environment variables, never in code
- Enable HTTPS (required for GPS on non-localhost)
- Review CORS settings if using a separate frontend
Performance optimization
- Set
debug=Falseinapp.py - Use production WSGI server (Gunicorn)
- Consider database migration (PostgreSQL) for high traffic
- Enable gzip compression
- Set up CDN for static assets
Deployment Options
- Heroku
- Railway
- VPS/Cloud Server
Deploy to Heroku
Checawaa includes aProcfile for easy Heroku deployment:Install Heroku CLI
Download from heroku.com/cli
Database Migration (Optional)
For production systems with many employees, migrate from JSON to PostgreSQL:Install PostgreSQL Support
Create Models
models.py
Update app.py
app.py
Troubleshooting
Common Issues
ImportError: No module named 'flask'
ImportError: No module named 'flask'
Solution: Ensure your virtual environment is activated and Flask is installed:
Scheduler running twice
Scheduler running twice
Solution: This is expected with
debug=True and Flask’s reloader. The app.py file already disables reloader:app.py
Emails not sending
Emails not sending
Causes:
- Invalid Gmail App Password
- 2-Step Verification not enabled
- Firewall blocking port 587
GPS not working on production
GPS not working on production
Cause: Modern browsers require HTTPS for Geolocation API (except localhost).Solution: Enable HTTPS using Let’s Encrypt or your hosting provider’s SSL certificate.
Port 5000 already in use
Port 5000 already in use
Solution: Change the port or kill the process using it:
Next Steps
Quick Start
Complete your first check-in and explore features
Configuration
Customize reminder times and tardiness rules
API Reference
Integrate with other systems
Admin Guide
Add, edit, and manage employee accounts