Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/epsilon-records/epsilon.fm

A modern open-source music distribution management system.
https://github.com/epsilon-records/epsilon.fm

bun digitalocean fastapi formsnap music prettier python record-label rust shadcn-svelte sqlmodel storybook svelte sveltekit swagger tailwindcss tauri typescript vercel vite

Last synced: 22 days ago
JSON representation

A modern open-source music distribution management system.

Awesome Lists containing this project

README

        


⚠️ CURRENTLY UNDER ACTIVE DEVELOPMENT - NOT YET GENERALLY AVAILABLE ⚠️


Epsilon Management System


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][contribute-image]][contribute-url]
[![Discord](https://img.shields.io/discord/412551291244380160?color=%235865F2&label=Discord&logo=discord&logoColor=%23fff)](https://discord.gg/NMKRYuzm)
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fnatehouk%2Fepsilon.fm.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fnatehouk%2Fepsilon.fm?ref=badge_shield)



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](https://www.postgresql.org): Set up a PostgreSQL database.
- [Redis](https://redis.io): Install and configure a Redis server.
- [Python](https://www.python.org): Make sure to have Python 3.12 or a newer version installed on your system.
- [Poetry](https://python-poetry.org): Install Poetry for managing Python dependencies.
- [Bun](https://bun.sh): 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:

```bash
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:

```bash
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](LICENSE).

[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fnatehouk%2Fepsilon.fm.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fnatehouk%2Fepsilon.fm?ref=badge_large)

[contribute-url]: https://github.com/epsilon-records/epsilon.fm/blob/main/CONTRIBUTING.md
[contribute-image]: https://img.shields.io/badge/PRs-welcome-blue.svg