Skip to content

Latest commit

 

History

History
240 lines (205 loc) · 12.1 KB

README.md

File metadata and controls

240 lines (205 loc) · 12.1 KB

A modern open-source music distribution management system.

Web URL: ms.epsilon.fm
API Base URL: api.epsilon.fm [Ping]
Documentation: v0.0.6

Logo for Epsilon

PRs-Welcome Discord FOSSA Status

SvelteKit Svelte Tailwind CSS Tauri FastAPI PostgreSQL Redis Swagger Storybook shadcn/ui Playwright Bun Vite HTML5 Python Rust TypeScript Prettier Zod Shopify Digital Ocean Vercel

🔍 Project Overview

This SvelteKit and FastAPI powered open-source music distribution platform aims to revolutionize how independent artists share and monetize their music. Built with modern web technologies and a focus on user experience, our platform provides a comprehensive suite of tools for artists to manage their releases, engage with fans, and track their success.

Key features include:

  • Music Distribution: Seamless uploading and distribution of tracks to major streaming platforms.
  • Artist Profiles: Customizable artist pages to showcase music, biography, and upcoming events.
  • Release Management: Tools for creating and managing music releases, including metadata editing and scheduling.
  • Analytics Dashboard: Real-time streaming and revenue data to help artists track their performance.
  • Social Media Integration: Easy sharing of releases and updates across various social platforms.
  • Royalty Tracking: Transparent royalty calculations and payout management.

The project leverages the power of SvelteKit for a blazing-fast frontend, FastAPI with SQLModel for efficient backend operations, and integrates with services like Clerk for authentication and UploadThing for file handling. The modular structure allows for easy expansion and customization.

Key areas of the platform include:

  • routes/(main): Core pages like homepage, artist dashboard, and release management.
  • routes/(website): Artist-specific public-facing pages.
  • lib/components: Reusable UI components for consistent design.
  • lib/server: Server-side utilities and integrations.

This project aims to provide a robust and scalable solution for music distribution while remaining open-source and community-driven. It serves as an excellent foundation for music tech enthusiasts, independent labels, and developers looking to contribute to the music industry's digital transformation.

Our goal is to empower artists with a platform that combines ease of use with powerful features, all while fostering an open ecosystem for music distribution technology.

🌟 Key Features

This project aims to provide a robust open-source platform for music distribution, incorporating modern web technologies and user-centric design:

  • 🎵 Music Distribution: Seamlessly upload and distribute tracks to major streaming platforms.
  • 👤 Artist Profiles: Create customizable artist pages to showcase music, biography, and events.
  • 📅 Release Management: Comprehensive tools for creating, editing, and scheduling music releases.
  • 📊 Analytics Dashboard: Real-time streaming and revenue data for performance tracking.
  • 🌐 Social Media Integration: Easy sharing of releases and updates across various platforms.
  • 💰 Royalty Tracking: Transparent calculations and management of royalty payouts.
  • SvelteKit Powered: Utilize SvelteKit for a blazing-fast, reactive user interface.
  • 🗃️ SQLModel: Efficient database operations with type-safe queries.
  • 🔐 Clerk Authentication: Secure and customizable user authentication and management.
  • 🗂️ UploadThing Integration: Robust file handling for music and image uploads.
  • 🎨 Customizable UI Components: Reusable components for consistent design across the platform.
  • 📱 Responsive Design: Mobile-friendly interface for on-the-go management.
  • 🔍 SEO Optimization: Built-in features to improve discoverability of artist pages.
  • 🌍 Internationalization: Support for multiple languages to reach a global audience.
  • 🚀 Scalable Architecture: Designed to handle growth from indie artists to major labels.
  • 🧩 Modular Structure: Easy to extend and customize for specific needs.
  • 🐳 Docker Support: Simplified deployment and development environments.
  • 👥 Open-Source Community: Benefit from and contribute to a growing ecosystem of music tech.

📋 Prerequisites

Before you begin, ensure you have the following prerequisites installed and configured:

  • PostgreSQL: Set up a PostgreSQL database.
  • Redis: Install and configure a Redis server.
  • Python: Make sure to have Python 3.12 or a newer version installed on your system.
  • Poetry: Install Poetry for managing Python dependencies.
  • Bun: Install Bun for managing Typescript dependencies.

Note: Soon, there will be an additional option for development using Docker containers.

Developing

Once you've cloned the code and installed dependencies with bun install, you can start the development server as follows:

bun run dev

# or start the server and open the app in a new browser tab
bun run dev -- --open

Building

To create a production version of the app:

bun run build

You can preview the production build with bun run preview.

Todo

[x] Setup pre-commit hooks (Husky, Lint-staged, Devmoji)
[x] Setup local code repository (Git)
[x] Setup remote code repository (GitHub)
[x] Setup project directory structure
[x] Setup project package managers (Bun, Poetry)
[x] Setup project code formating (Prettier, Ruff)
[x] Setup project documentation (LICENSE, README.md, CODE_OF_CONDUCT.md)
[x] Setup PostgreSQL datebase (Vercel)
[x] Setup Redis database (Upstash)
[x] Bootstrap frontend application (SvelteKit)
[x] Bootstrap backend API (FastAPI)
[x] Bootstrap API documentation (FastAPI)
[x] Bootstrap mobile and desktop applications (Tauri)
[x] Implement CI/CD for frontend application (Vercel)
[x] Implement CI/CD for backend API (DigitalOcean)
[x] Implement CI/CD for dependabot (GitHub Actions)
[ ] Implement CI/CD for code formatting (Prettier, Ruff)
[ ] Implement CI/CD for linting (ESLint, Stylelint)
[ ] Implement CI/CD for testing and coverage reports (Pytest, Codecov)
[x] Implement frontend logging (Pino)
[x] Implement log drain (Logflare)
[x] Implement error handling (Sentry)
[x] Implement analytics (Posthog, Vercel)
[x] Implement component workshop (Storybook)
[x] Implement visual testing (Chromatic)
[x] Implement end-to-end testing (Checkly, Meticulous)
[x] Implement speed testing (Vercel)
[ ] Implement database backups (SimpleBackups)
[x] Implement design system (TailwindCSS)
[x] Implement frontend authentication (Clerk)
[x] Implement backend API authentication (OAuth2)
[x] Implement file uploads (UploadThing)
[x] Implement backend artist model (SQLModel)
[ ] Implement backend release model (SQLModel)
[ ] Implement backend track model (SQLModel)
[ ] Implement frontend artist model (Zod)
[ ] Implement frontend release model (Zod)
[ ] Implement frontend track model (Zod)
[ ] Implement profile form (Formsnap, Superforms)
[ ] Implement release form (Formsnap, Superforms)
[ ] Implement track form (Formsnap, Superforms)
[x] Implement artist website (SvelteKit)
[ ] Implement custom 404 page (SvelteKit)
[ ] Implement custom 500 page (SvelteKit)
[ ] Implement custom domains (Vercel)
[ ] Implement database migrations (Alembic)
[ ] Implement rate limiting (Redis)
[ ] Implement caching (Redis)

License

Epsilon is released under the MIT license.

FOSSA Status