⚠️ CURRENTLY UNDER ACTIVE DEVELOPMENT - NOT YET GENERALLY AVAILABLE ⚠️
A modern open-source music distribution management system.
Web URL: ms.epsilon.fm
API Base URL: api.epsilon.fm [Ping]
Documentation: v0.0.6
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:
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.
This project aims to provide a robust open-source platform for music distribution, incorporating modern web technologies and user-centric design:
Before you begin, ensure you have the following prerequisites installed and configured:
Note: Soon, there will be an additional option for development using Docker containers.
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
To create a production version of the app:
bun run build
You can preview the production build with bun run preview
.
[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)
Epsilon is released under the MIT license.