Skip to content

atoyegbe/alma

Repository files navigation

🎵 Alma - Your Musical Soulmate Finder

FastAPI Python Spotify PostgreSQL Redis Testing

🎶 "Music is the universal language of mankind" - Henry Wadsworth Longfellow

🌟 What is Alma?

Alma is not just another social platform – it's your gateway to meaningful connections through the universal language of music. By analyzing your Spotify listening patterns, Alma finds your musical soulmates and creates connections that resonate with your soul.

🎯 Why Alma?

  • 🎨 Authentic Connections - Connect based on genuine musical taste, not curated profiles
  • 🔒 Privacy First - Your data is yours. Share only what you want, when you want
  • 🤖 Smart Matching - AI-powered algorithms that understand music like you do
  • Real-time Experience - Live music sharing and synchronized listening experiences

✨ Features

🎸 Core Features

🔑 Spotify Integration
  • 🔐 Secure OAuth2 authentication
  • 🔄 Real-time music data sync
  • 📊 Deep musical taste analysis
🤝 Smart Connection System
  • 🧠 AI-powered compatibility matching
  • 🛡️ Privacy-focused social features
  • 🎭 Progressive profile reveal
🎧 Mood Rooms
  • 🎵 Real-time music sharing spaces
  • 🔄 Live track synchronization
  • 👥 Shared listening experiences
📊 Music Analysis
  • 🎯 Genre preference matching
  • 🎸 Artist overlap detection
  • 📈 Listening pattern analysis
  • 💫 Music soul level calculation

🚀 Quick Start

📋 Prerequisites

Before you begin, ensure you have:

  • 🐍 Python 3.9+
  • 🐘 PostgreSQL
  • 📦 Redis
  • 🎵 Spotify Developer Account

💻 Installation

1️⃣ Clone & Navigate

git clone [repository-url]
cd alma

2️⃣ Set Up Virtual Environment

python -m venv venv
source venv/bin/activate  # 🪟 Windows: venv\Scripts\activate

3️⃣ Install Dependencies

pip install -r requirements.txt

4️⃣ Configure Environment

cp .env.example .env
# ✏️ Edit .env with your settings

5️⃣ Initialize Database

alembic upgrade head

🏃‍♂️ Running Alma

Quick Start:

bash run.sh

Manual Start:

uvicorn main:app --reload --port 8000

🛠️ Development

📁 Project Structure

alma/
├── 📱 app/                # Application core
│   ├── 🔑 auth/          # Authentication
│   ├── 🤝 connections/   # User connections
│   ├── 💾 database/      # Database layer
│   ├── 📊 models/        # Data models
│   ├── 🎵 music/         # Music analysis
│   ├── 📝 playlists/     # Playlist management
│   └── 🔌 websockets/    # Real-time features
├── 🧪 tests/             # Test suite
├── 📦 alembic/           # Database migrations
└── 📄 requirements.txt   # Dependencies

🧪 Testing

Run All Tests:

pytest                 # 🧪 All tests
pytest --cov=app      # 📊 With coverage

Specific Test Categories:

pytest tests/auth/    # 🔑 Auth tests
pytest tests/models/  # 📊 Model tests
pytest -m unit        # 🎯 Unit tests

📚 API Documentation

Once running, explore the API at:

  • 🔍 Swagger UI: http://localhost:8000/docs
  • 📖 ReDoc: http://localhost:8000/redoc

🤝 Contributing

We love your input! Check out our Contributing Guidelines for ways to contribute.

  1. 🍴 Fork the repo
  2. 🌿 Create your feature branch (git checkout -b feature/AmazingFeature)
  3. 💾 Commit changes (git commit -m 'Add AmazingFeature')
  4. 📤 Push to branch (git push origin feature/AmazingFeature)
  5. 🎁 Open a Pull Request

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • 🎵 Spotify Web API
  • 🚀 FastAPI Framework
  • 💾 SQLAlchemy ORM
  • 🔄 Redis

Made with ❤️ by the Alma Team

⭐ Star us on GitHub

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages