Skip to content

epsilon-records/epsilon.fm

Repository files navigation

A modern open-source music distribution platform. Visit us at epsilon.fm

Logo for Epsilon

PRs-Welcome Discord FOSSA Status

SvelteKit Svelte Tailwind CSS Tauri Swagger Storybook Shopify shadcn/ui Rust Playwright Bun Vite HTML5 JSON Python Rust TypeScript Prettier Drizzle Zod Arch Linux Snyk Vercel Digital Ocean

πŸ” 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, Drizzle ORM for efficient database 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/db: Database schema and operations using Drizzle ORM.
  • 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.
  • πŸ—ƒοΈ Drizzle ORM: 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.11 or a newer version installed on your system.
  • Poetry: Install Poetry for managing dependencies.

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

Frontend

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.

Backend

Installing Poetry

Poetry is a dependency manager for Python. Follow the steps below to install Poetry:

  1. Open a terminal.

  2. Run the following command to install Poetry using pip:

    pip install poetry
  3. Verify the installation by running:

    poetry --version

    This should display the installed Poetry version.

Now that the requirements are met, you can begin working on your project. For more details for a manual setup, please refer to the Backend README section.

Todo

[x] Bootstrap frontend (SvelteKit)
[x] Deploy frontend via CICD (Vercel)
[x] Implement authentication (Clerk)
[x] Implement error handling (Sentry)
[x] Implement analytics (Posthog, Vercel)
[x] Implement testing (Checkly, Meticulous)
[x] Implement file uploads (UploadThing)
[ ] Implement release form
[ ] Implement track form
[x] Implement artist websites
[ ] Implement wildcard domains
[x] Implement mobile and desktop applications (Tauri)
[x] Bootstrap backend API (FastAPI, SQLModel)
[x] Deploy backend via CICD (DigitalOcean)
[ ] Implement backend API
[ ] Remove server side rendering by switching to backend api (required for Tauri)

License

FOSSA Status