A modern music streaming platform with playlist management, user collections, and social features.
- Music Streaming - Stream audio tracks with a beautiful player interface
- Playlist Management - Create, edit, and share playlists
- User Collections (Koleqtion) - Personal music library with favorites
- Social Features - Like users, comment on playlists and tracks
- Upload System - Upload your own tracks with cover art
- Admin Dashboard - Analytics and database monitoring
- Monetization Ready - Stripe integration for subscriptions
- Backend: Node.js, Express.js
- Database: PostgreSQL
- Storage: Local filesystem or S3-compatible (Cloudflare R2)
- Authentication: JWT tokens with bcrypt password hashing
- Frontend: Vanilla JavaScript SPA with CSS custom properties
- Node.js 18+
- PostgreSQL database
- (Optional) S3-compatible storage for file uploads
-
Clone the repository:
git clone https://github.com/arminisa95/juqeboks.git cd juqeboks -
Install dependencies:
npm install
-
Configure environment variables:
cp .env.example .env # Edit .env with your configuration -
Start the development server:
npm run dev
-
Open http://localhost:3000 in your browser
| Command | Description |
|---|---|
npm start |
Start production server |
npm run dev |
Start development server with auto-reload |
npm run db:test |
Test database connection |
npm run db:setup |
Initialize local database |
JUKE/
├── public/ # Frontend static assets
│ ├── css/ # Stylesheets
│ │ ├── variables.css # CSS custom properties (theme)
│ │ ├── styles.css # Main styles
│ │ └── ... # Component-specific styles
│ ├── js/ # Frontend JavaScript
│ │ ├── api.js # API integration
│ │ ├── auth.js # Authentication
│ │ ├── player.js # Music player
│ │ ├── spa.js # Single-page app router
│ │ └── ... # Feature modules
│ ├── images/ # Static images
│ ├── views/ # HTML templates
│ └── index.html # Main entry point
├── src/ # Server-side source code
│ ├── server.js # Express API server
│ ├── database/ # Database configuration & schemas
│ └── monetization/ # Payment integration
├── docs/ # Documentation
│ └── showtime/ # Showtime documentation
├── scripts/ # Utility scripts
├── uploads/ # User-uploaded files
├── .env.example # Environment variables template
├── .editorconfig # Editor configuration
└── package.json # Project dependencies
POST /api/auth/register- Register new user (with account type, email verification, Stripe checkout)POST /api/auth/verify-email- Verify email with tokenPOST /api/auth/resend-verification- Resend verification emailPOST /api/auth/login- User loginPOST /api/auth/change-password- Change password
POST /api/payments/webhook- Stripe webhook for payment confirmationGET /api/payments/checkout-status?session_id=...- Check Stripe checkout status
GET /api/users/profile- Get current user profilePUT /api/users/profile- Update profilePOST /api/users/avatar- Upload avatar
GET /api/tracks- List all tracksPOST /api/tracks- Upload new trackGET /api/tracks/:id- Get track detailsDELETE /api/tracks/:id- Delete track
GET /api/playlists/my- Get user's playlistsPOST /api/playlists- Create playlistGET /api/playlists/:id/tracks- Get playlist tracksPOST /api/playlists/:id/tracks- Add track to playlist
GET /api/favorites- Get user's favoritesPOST /api/favorites/:trackId- Toggle favorite
See .env.example for all available configuration options.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License.