Die Studienhilfsapp für Schüler:innen der Kanti Baden
This project was developed as part of a Maturitätsarbeit (Matura Thesis) at the Kantonsschule Baden (Switzerland).
The goal of the thesis was to investigate how digital tools can improve the study habits of high school students and to implement a practical solution based on those findings. The application combines theoretical research on learning algorithms with modern web development practices.
KantiKoala is a comprehensive study assistance application designed specifically for students at Kanti Baden. The platform provides tools and resources to help students manage their studies more effectively.
- 📚 Study Resources - Curated learning tips
- 📅 Agenda - An agenda with a learning time algorithm
- 📊 Grade management - A place to store and organize grades
- 📃 To-Do List - To-Do list organization
- 👥 User Management - Secure authentication
- 🎨 Modern UI - Responsive design with TailwindCSS
- 🔒 Secure - Industry-standard security practices
Before you begin, ensure you have the following installed:
- Python 3.13 (which is recommended, but
3.8should work as well) - Node.js & npm (for TailwindCSS compilation)
- PostgreSQL (for production) or SQLite (for development)
-
Clone the repository
git clone https://github.com/CoderAryanAnand/KantiKoala.git cd KantiKoala -
Set up Python virtual environment
python -m venv venv # Windows: .\venv\Scripts\activate # Mac/Linux: source venv/bin/activate
-
Install Python dependencies
pip install -r requirements.txt
-
Install Node.js dependencies (for TailwindCSS)
npm install
-
Create a
.envfile in the root directory:# Flask Configuration SECRET_KEY=your-secret-key-here # Database Configuration DATABASE_URL=sqlite:///dev.db # For development # DATABASE_URL=postgresql://user:password@localhost/dbname # For production # Email Configuration (optional) RESEND_API_PASSWORD=your-resend-api-key # Flask Environment FLASK_ENV=development
-
Initialize the database
flask db upgrade
-
Development Mode:
flask run
-
Production Mode (using Gunicorn):
gunicorn --bind 0.0.0.0:8080 wsgi:application
-
Access the application
Open your browser and navigate to:
http://localhost:5000
To compile TailwindCSS styles during development:
npx tailwindcss -i ./kkoala/static/main.css -o ./kkoala/static/output.css --watchKantiKoala/
├── kkoala/ # Main application package
│ ├── __init__.py # Application factory
│ ├── algorithms.py # Core algorithms
│ ├── config.py # Configuration settings
│ ├── models.py # Database models
│ ├── utils.py # Utility functions
│ ├── routes/ # Route blueprints
│ ├── static/ # Static files (CSS, JS, images)
│ ├── templates/ # Jinja2 templates
│ └── tips/ # Study tips content
├── migrations/ # Database migrations
├── report/ # Project documentation
├── requirements.txt # Python dependencies
├── package.json # Node.js dependencies
├── tailwind.config.js # TailwindCSS configuration
├── wsgi.py # WSGI entry point
└── Procfile # Heroku deployment config
| Category | Technologies |
|---|---|
| Backend | Flask 3.1.0, Python 3.13 |
| Database | SQLAlchemy 2.0, PostgreSQL / SQLite |
| Authentication | Flask-Bcrypt |
| Frontend | Jinja2, TailwindCSS 3.4 |
| Resend API | |
| Deployment | Gunicorn |
flask db migrate -m "Description of changes"flask db upgradeflask db downgradeThe application supports multiple configurations:
DevConfig- Development environment with debug mode and SQLiteProdConfig- Production environment with PostgreSQLTestConfig- Testing environment with in-memory database
Switch configurations by modifying wsgi.py:
config = "kkoala.config.DevConfig" # or ProdConfig, TestConfigContributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Maintainer: Aryan Anand
- Research: Simon Haddon
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
If you encounter any issues or have questions:
- 📋 Open an Issue
- 💬 Contact the maintainer
Made with ❤️ for Kanti Baden students
⭐ Star this repository if you find it helpful!