A hierarchical todo list application with an immersive medieval theme that allows users to manage quests (todos) with up to 3 levels of nested sub-quests.
- 🏰 Medieval-themed UI with smooth animations and visual effects
- 👤 User authentication system
- 📜 Multiple todo lists (quest journals)
- ⚔️ Hierarchical tasks up to 3 levels deep
- 🔄 AJAX-powered interactions for smooth UX
- 📱 Responsive design with elegant scrolling behavior
The project uses Flask for the backend, SQLAlchemy for the database, and vanilla JavaScript with AJAX for frontend interactions. The medieval theme is implemented through CSS variables, gradients, and animations.
medieval-todos/
├── app/
│ ├── models/
│ │ ├── todo.py # TodoList and TodoItem models
│ │ └── user.py # User authentication model
│ ├── routes/
│ │ ├── auth.py # Authentication routes
│ │ └── todos.py # Todo management routes
│ ├── static/
│ │ ├── css/
│ │ │ └── style.css # Medieval-themed styling
│ │ └── js/
│ │ └── main.js # AJAX handlers and UI interactions
│ └── templates/
│ ├── _list_card.html # List component template
│ ├── _macros.html # Reusable template components
│ └── todos.html # Main todo interface
└── tests/
├── test_auth.py # Authentication tests
└── test_todos.py # Todo functionality tests
(app/static/js/main.js)
-
Smooth scroll position management with storeScrollPosition() / restoreScrollPosition()
-
AJAX form submissions via handleAjaxSubmission()
-
Dynamic list updates using updateListItems() and updateListsContainer()
(app/static/css/style.css
)
- Medieval color scheme with variables
- Smooth animations and transitions
- Hierarchical indentation for nested items
- Responsive layout with mobile support
(app/models/todo.py)
- TodoList for managing collections of items
- TodoItem with self-referential relationship for hierarchy
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate.bat # Windows
# Install dependencies
pip install -r requirements.txt
# Initialize database (alternatively: run if you manually deleted the db)
flask db upgrade
# Run development server
flask run
- Register/Login to access your todo lists
- Create new lists using the "Create New List" form
- Add items to lists with the "Add new quest..." form
- Create sub-items up to 3 levels deep
- Toggle item completion with checkboxes
- Expand/collapse sub-items using arrow buttons
- Move items between lists using the move button
Run the test suite:
pytest -v
Generate coverage report:
pytest --cov=app --cov-report=term-missing
MIT License - See LICENSE file for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
Made with ❤️ by Carl Kho.