Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/epsilon-records/epsilon.fm
- Owner: epsilon-records
- License: mit
- Created: 2024-07-02T07:59:09.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-09-30T13:18:21.000Z (about 1 month ago)
- Last Synced: 2024-10-01T05:04:15.927Z (about 1 month ago)
- Topics: bun, digitalocean, fastapi, formsnap, music, prettier, python, record-label, rust, shadcn-svelte, sqlmodel, storybook, svelte, sveltekit, swagger, tailwindcss, tauri, typescript, vercel, vite
- Language: TypeScript
- Homepage: https://ms.epsilon.fm
- Size: 33 MB
- Stars: 11
- Watchers: 3
- Forks: 5
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
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
[![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)# 🔍 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