Project Info
Inspiration
Our team wanted to address the Education Track Challenge presented by Zoom— in particular addressing music education. As avid lovers and musicians, all 3 of us in the team wanted to join in the process of gamifying education by using AI algorithms to aid learning an instrument or vocal singing.
What it does
Our app will first display a tailored feed of music recommendations. They may choose to like, save, or scroll past each piece of music. The app will process data from likes, saves, and retention in a cosine similarity algorithm to determine musical repertoire recommendations for the user to practice and play.
How we built it
Our team used Flutter for frontend development and SQL relational database for backend development. With Flutter, we ran both an IOS and Android simulator to see the UI / UX design element changes in real time. The SQL database was used to store all the songs and musical pieces in our mobile app, while OpenAI API was used to generate vector embeddings for our recommendation engine’s cosine similarity search. Hence, our tech stack included Dart in addition to algorithms in Python for data ingestion and C++ for app development.
Challenges we ran into
We didn’t know how to create a recommendation system to match users with songs they might like, for which we want into challenges while generating and storing vector embeddings. In addition to navigating vector databases, our team struggled with merging the git commits and push-pull requests as working in a team in a hackathon was a new experience for all of us.
Accomplishments we're proud of
The queue shuffler for songs on the home page of the mobile app is very enjoyable, as our AI LLM powered recommendation algorithm presents these songs to our users based on their favorite genres, previous liked and saved songs. Users have the ability to both save and like the songs recommended by our queue shuffler. The app also collects data from these interactions to fuel the recommendation algorithm.
What we learned
All of us in the team learned how to code in Flutter and FlutterFlow for frontend mobile app development, which has been a very enjoyable and learning experience for us. From possessing the added flexibility to drag and drop design elements to our OS simulator to learning how to create complex screens with embedded media links, learning to code in Flutter has been the highlight of Treehacks for us. Additionally, we were able to utilize the new IDE developed by Codeium, Windsurf, whose Claude Sonnet-powered copilot has helped us brainstorm and plan complex algorithms.
What's next
We have already started creating customer surveys for fellow hackers to gather user testimonials and interest. Based on the vast majority of our users listening to music through Spotify and YouTube Music, we plan to integrate Spotify song links into our mobile app’s homepage in addition to the YouTube Music integration. In the future after the hackathon ends, we plan to iterate MUSES and pivot if necessary to reach a bigger audience and spread the joy of learning music.
Muses - Music Learning Platform
Muses is a modern, interactive music learning platform that helps users discover and learn music through an engaging interface. Named after the Greek muse of music, Euterpe combines powerful music recommendation algorithms with an intuitive learning experience.
Features
- 🎵 Interactive music discovery feed
- 💖 Like and save favorite tracks
- 🎯 Personalized music recommendations
- 👤 User profiles with learning history
- 📱 Responsive mobile-first design
- 🔄 Continuous playback queue
Tech Stack
Backend (Python)
- Flask web framework
- SQLAlchemy ORM
- PostgreSQL database
- RESTful API architecture
- YouTube API integration
Frontend (Flutter/Dart)
- Flutter framework for cross-platform development
- Provider for state management
- HTTP package for API communication
- SharedPreferences for local storage
- Custom UI components
Project Structure
euterpe/
├── backend/
│ ├── app/
│ │ ├── models/ # Database models
│ │ ├── routes/ # API endpoints
│ │ └── utils/ # Helper functions
│ ├── config.py # Configuration settings
│ ├── requirements.txt # Python dependencies
│ ├── seed_database.py # Database seeding script
│ └── server.py # Main server file
│
└── frontend/
└── lib/
├── components/ # Reusable UI components
├── providers/ # State management
├── screens/ # App screens
├── services/ # API services
└── main.dart # Entry point
Getting Started
Backend Setup
-
Create a Python virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -
Install dependencies:
cd backend pip install -r requirements.txt -
Set up the database:
python seed_database.py -
Start the server:
python server.py
Frontend Setup
-
Install Flutter dependencies:
cd frontend flutter pub get -
Run the app:
flutter run
API Endpoints
POST /auth/register- Register new userPOST /auth/login- User loginPOST /interactions/like- Like a trackPOST /interactions/unlike- Unlike a trackGET /recommendations- Get personalized recommendationsGET /saved-songs- Get user's saved songs
Contributing
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Flutter team for the amazing cross-platform framework
- Flask team for the lightweight WSGI web application framework
- All contributors who have helped shape this project
Analysis
View
Metric
- 25
- 10
- 7
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CIn code
- C++In code
- DartIn code
- FlaskIn code
- HTMLIn code
- KotlinIn code
- PythonIn code
- SwiftIn code
- OpenAIClaimed
- SQLClaimed
8 of 10 appear in the indexed code. 2 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
167 KB
Source files
72
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Hecate946/Muses
174 files · 2.5 MB · @ 9db8830
Structure
Interface
27 files · 16%Screens, components and styles rendered to the user.
API & routing
7 files · 4%Request entry points: routes, handlers and controllers.
Application logic
75 files · 43%Domain rules, services and shared utilities.
+2 moreData & schema
1 file · 1%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Dart48%
- Python24%
- C++12%
- C4%
- XML3%
- YAML3%
- Other (5)6%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
backend/requirements.txt
pypi · 23- alembic
- bcrypt
- blinker
- cachetools
- certifi
- charset-normalizer
- click
- Flask
- Flask-Bcrypt
- Flask-Cors
- Flask-SQLAlchemy
- greenlet
- idna
- itsdangerous
- Jinja2
- Mako
- MarkupSafe
- requests
- +5 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.