A comprehensive digital marketplace platform developed with Flask for the IY4103 Web Development course at the University of Essex. Lorekeeper enables users to trade virtual items, manage transactions, and participate in a community-driven marketplace with integrated mini-games and interactive features.
Lorekeeper is a full-stack web application that demonstrates advanced concepts in web development, focusing on:
- Digital marketplace functionality
- User authentication and role management
- Virtual currency systems
- Community interaction
- Mini-games and storytelling features
-
User Authentication System
- Secure login/registration with role-based access control
- User profiles with customizable bios
- Session management with cookies
-
Virtual Item Marketplace
- Browse and filter items by category and tags
- Detailed product listings with reviews
- Vendor management system
-
Transaction System
- Virtual currency (AW) management
- User-to-user transfers
- Purchase processing
- Transaction history tracking
-
Support Ticketing
- User ticket creation and management
- Staff response interface
- Categorized support requests
- Taverns (Forums)
- Discussion boards by topic
- Post and reply system
- Upvote/downvote functionality
- User reputation tracking
-
GrindStone Mini-Game
- Resource gathering simulation
- Character progression
- Skill development
- Inventory management
-
LoreTeller Interactive Storytelling
- AI-driven narrative experiences
- Player choice-based adventures
- Custom adventure creation
-
Admin Dashboard
- User management and privilege control
- Transaction monitoring
- System parameter configuration
- Support ticket oversight
-
Moderator Tools
- Content moderation
- Support ticket handling
- Community management
- Backend: Python 3.x, Flask
- Database: SQLite with SQLAlchemy ORM
- Frontend: HTML5, CSS3, JavaScript, Bootstrap
- Authentication: Flask session management
- Template Engine: Jinja2
IY4103-Flask-App/
├── app.py # Main application file
├── models.py # Database models
├── utils.py # Utility functions
├── wrappers.py # Authentication wrappers
├── config.py # Configuration settings
├── routes/ # Route modules
│ ├── grindstone.py # Mini-game routes
│ ├── route_loremaker.py # Storytelling routes
│ ├── route_subs.py # Subscription routes
│ ├── route_taverns.py # Forum routes
│ └── route_vendor.py # Vendor dashboard routes
├── templates/ # HTML templates
│ ├── taverns/ # Forum templates
│ ├── loremaker/ # Storytelling templates
│ └── vendor/ # Vendor templates
├── static/ # Static assets
│ ├── css/ # Stylesheets
│ ├── scripts/ # JavaScript files
│ └── svg/ # SVG assets
├── migrations/ # Database migrations
├── grindstone/ # Mini-game implementation
└── populate_db.py # Test data generation
Project Tekamul is an ongoing initiative to enhance the application's architecture by modularizing the codebase. The goal is to improve maintainability, scalability, and code organization by moving routes into their respective feature-specific files.
-
✅ Completed Modules:
- GrindStone mini-game routes (
routes/grindstone.py
) - LoreTeller storytelling routes (
routes/route_loremaker.py
) - Subscription management (
routes/route_subs.py
) - Taverns (forum) functionality (
routes/route_taverns.py
) - Vendor dashboard (
routes/route_vendor.py
)
- GrindStone mini-game routes (
-
🔄 In Progress:
- Authentication and user management routes
- Marketplace transaction routes
- Support ticket system routes
- Admin dashboard routes
- Improved code organization and maintainability
- Better separation of concerns
- Easier feature development and testing
- Simplified collaboration among developers
- Enhanced scalability for future features
Note: This application requires Python 3.7 or higher.
- Clone the repository
git clone https://github.com/Noxire-Hash/IY4103-Flask-App.git
cd IY4103-Flask-App
- Create and activate virtual environment
# Windows
python -m venv venv
.\venv\Scripts\Activate.ps1
# Linux/MacOS
python3 -m venv venv
source venv/bin/activate
- Install dependencies
pip install -r requirements.txt
- Initialize database
flask db init
flask db migrate -m "Initial migration"
flask db upgrade
- Populate database with test data (optional)
python populate_db.py
- Run the application
# Windows
python app.py
# Linux/MacOS
python3 app.py
- Access the application
Open your browser and navigate to http://127.0.0.1:5000
Role | Password | |
---|---|---|
Admin | lorekeeper@lorekeeper.com | lorekeeper |
Teacher | essexuniversity@essex.ac.uk | essexuniversity |
Moderator | mod@example.com | moderator123 |
Vendor | gamemaster@example.com | vendor123 |
User | adventurer1@example.com | user123 |
The application implements a relational database with the following key models:
- User: Account information and authentication
- Privilege: Role-based permission system
- Item: Marketplace product management
- Purchase/Receipt: Transaction records
- SystemTransaction/TransactionLog: Financial tracking
- SupportTicket/Response: Customer support system
- CommunityPost/Reply: Forum functionality
- GrindStone models: Game state management
- LoreTeller models: Storytelling system
- Fork the repository
- Create a feature branch:
git checkout -b feature-name
- Commit your changes:
git commit -m 'Add some feature'
- Push to the branch:
git push origin feature-name
- Submit a pull request
Planned enhancements include:
- Real-time notifications with WebSockets
- Enhanced analytics dashboard
- Mobile responsive design improvements
- AI-driven content recommendation system
- Expanded mini-game system
- Achievement and badge systems
This project was developed for educational purposes as part of the IY4103 Web Development course at the University of Essex.
- IY4103 Web Development course faculty
- University of Essex
- Flask and related package developers
- Bootstrap team