- Python 3.8+
- pip
-
Create a virtual environment:
python -m venv .venv
-
Activate the virtual environment:
- On Windows:
.venv\Scripts\activate
- On macOS/Linux:
source .venv/bin/activate
- On Windows:
-
Install dependencies:
pip install -r requirements.txt
-
Verify critical dependencies:
pip show freezegun pytest Flask
pytest
# Required for path resolution
python scripts/path_config.py --force --platform=win
# Install critical dependencies
python -m pip install Flask-Migrate==4.0.5 requests==2.32.3
Error: ModuleNotFoundError: No module named 'flask_migrate'
Fix:
python -m pip install -r requirements.txt
python scripts/path_config.py --force
Error: ModuleNotFoundError
(general)
- Ensure the virtual environment is activated
- Run
pip install -r requirements.txt
- Verify installation with
pip show <package_name>
If time-based tests are failing:
- Ensure freezegun is installed:
pip show freezegun
- If not installed:
pip install freezegun>=1.2.2
To verify all dependencies are installed:
pytest tests/test_dependencies.py
The Stipend Discovery Website is a platform for exploring and filtering stipends through a responsive, mobile-first interface. Built using Flask with HTMX for real-time interactivity, it includes a secure admin interface and automated bots for data management.
- Real-time stipend discovery with tag-based filtering
- Secure admin interface for managing stipends, tags, and organizations
- Automated bots for tagging, updates, and validation
- Responsive design with mobile-first approach
- Comprehensive testing with 80%+ coverage goal
- Version management system with semantic versioning
- Automated database backup functionality
- Production environment validation checks
-
Clone the repository:
git clone https://github.com/yourusername/stipend-discovery.git cd stipend-discovery
-
Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Set up environment variables:
- Copy
.env.example
to.env
- Update the values in
.env
with your configuration
- Copy
-
Initialize the database:
flask db upgrade
-
Run the development server:
flask run
- Access the homepage at
http://localhost:5000
- Browse stipends using tag filters
- View detailed stipend information
- Access admin routes at
/admin
- Manage stipends, tags, and organizations
- Monitor bot status and activity
Run tests with:
pytest --cov=app --cov-report=term-missing
We aim to maintain 80%+ test coverage. Tests include:
- Unit tests for models and services
- Integration tests for routes
- End-to-end tests for user workflows
-
Create a new branch:
git checkout -b feature/your-feature-name
-
Make your changes following our Coding conventions.
-
Write tests for new functionality
-
Submit a pull request with a clear description of changes
This project is licensed under the MIT License - see the LICENSE file for details.
- Versioning Policy: The project follows semantic versioning (MAJOR.MINOR.PATCH).
- Current Version: v1.2.11
- Release Notes:
- Finalized deployment verification system
- Improved error handling and logging
- Streamlined review process
- Added comprehensive documentation
- Verified production readiness
- Fixed logger initialization issues
- Added proper environment validation
- Completed security verification
- Finalized version management
- Verified database connection handling
- Completed test coverage requirements
- To create a production database backup:
/run python scripts/verification/verify_backup.py --create
- To run database migrations:
/run python scripts/startup/init_db.py --migrate
- Update release notes:
/run python scripts/finalize_docs.py --include-deployment
- Commit and push changes:
/run python scripts/commit_changes.py --message "Release v1.2.11" --push
- Create and push version tag:
git tag v1.2.11 git push origin v1.2.11
-
Validate production environment:
/run python scripts/verification/verify_production.py --full
-
Verify deployment readiness:
/run python scripts/verification/verify_deployment.py --check-type=final-check
-
Flask and SQLAlchemy for the backend framework
-
HTMX for frontend interactivity
-
Alembic for database migrations