Skip to content

PiotrGrobelak/techno-ambassador

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

74 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Techno Ambassador

A global calendar platform dedicated to DJs that enables artists to showcase their availability and upcoming events while allowing fans and event organizers to discover and contact DJs for booking performances.

Table of Contents

Project Description

Techno Ambassador is a global calendar platform dedicated to DJs that connects three main user groups: DJs managing their calendars, fans seeking information about their favorite artists' performances, and event organizers looking for DJs for their events.

Key Features

  • DJ Profile Management: Complete profiles with biography, music styles, social media links, and optional photos
  • Calendar System: Simple event list with one-year planning horizon and event history preservation
  • Advanced Search & Filtering: Find DJs by location, music style, availability, and name
  • Mobile-First Design: Full functionality across web and mobile devices
  • Direct Contact: Social media integration for booking inquiries
  • SEO-Friendly: Clean URL structure (e.g., /dj/dj-name)

Problem Solved

The platform addresses the lack of a centralized tool for DJs to showcase their availability and upcoming performances. It solves several key issues:

For DJs:

  • Lack of platform to showcase their schedule and availability
  • Difficulties in reaching potential clients and fans
  • Need to manage multiple communication channels
  • Lack of tools for professional presentation of their calendar

For Fans & Event Organizers:

  • Finding information about DJ availability for specific dates
  • Discovering new artists in their area
  • Checking performance schedules of favorite DJs
  • Contacting artists for potential bookings

Target Users

  • DJs (Artists): Managing their performance calendars and showcasing availability
  • Fans: Seeking information about their favorite artists' performances
  • Event Organizers: Looking for DJs for their events and checking availability

Tech Stack

Frontend

  • Astro 5 - For creating fast, efficient pages with minimal JavaScript
  • Vue 3 - For interactive components
  • TypeScript 5 - For static typing and improved developer experience
  • Tailwind 4 - For efficient styling
  • PrimeVue - For accessible UI components

Backend

  • Supabase - Comprehensive backend solution providing:
    • PostgreSQL database
    • Built-in user authentication
    • SDK support for multiple languages

CI/CD and Hosting

  • GitHub Actions - For CI/CD pipelines
  • Cloudflare Pages - For hosting the project

Live Demo

🌐 Live Application: https://techno-ambassador.pages.dev/

Experience Techno Ambassador in action! The live demo showcases all core features including DJ discovery, event browsing, and user authentication. You can create an account, explore DJs, and test the full functionality of the platform.

Getting Started Locally

Prerequisites

  • Node.js v22 (use nvm to install the correct version)
  • Git

Installation

  1. Clone the repository

    git clone https://github.com/yourusername/techno-ambassador.git
    cd techno-ambassador
  2. Install dependencies

    npm install
  3. Set up environment variables (create a .env file based on .env.example)

  4. Start the development server

    npm run dev

Available Scripts

  • npm run dev - Start the development server
  • npm run dev:remote - Start the development server in remote mode(Supabase database is running on remote server)
  • npm run build - Build the project for production
  • npm run preview - Preview the production build locally
  • npm run astro - Run Astro CLI commands
  • npm run lint - Run ESLint and automatically fix issues
  • npm run lint:check - Run ESLint without fixing issues
  • npm run format - Format code with Prettier
  • npm run format:check - Check if code formatting meets Prettier standards

Testing

The project implements a comprehensive testing strategy with multiple layers to ensure code quality and functionality.

Testing Frameworks

  • Vitest - Fast unit testing framework with Vue Test Utils integration
  • Playwright - End-to-end testing for cross-browser compatibility
  • Vue Test Utils - Official testing utilities for Vue components
  • MSW (Mock Service Worker) - API mocking for reliable tests
  • Faker.js - Test data generation

Test Commands

# Unit Tests
npm run test              # Run tests in watch mode
npm run test:watch        # Run tests in watch mode (explicit)
npm run test:ui           # Open Vitest UI for interactive testing
npm run test:coverage     # Run tests with coverage report

# End-to-End Tests
npm run test:e2e          # Run E2E tests headlessly
npm run test:e2e:ui       # Run E2E tests with Playwright UI
npm run test:e2e:headed   # Run E2E tests with visible browser
npm run test:e2e:debug    # Debug E2E tests step by step

# Playwright Project-Specific Tests
npm run test:e2e -- --project=chromium-authenticated    # Run authenticated tests only
npm run test:e2e -- --project=chromium-unauthenticated  # Run auth/registration tests only
npm run test:e2e -- --project=setup                     # Run setup tests only
npm run test:e2e:ui -- --project=chromium-authenticated # Run authenticated tests in UI mode

# All Tests
npm run test:all          # Run all tests with coverage + E2E

Test Structure

src/test/               # Unit test configuration
β”œβ”€β”€ setup.ts           # Global test setup and mocks
β”œβ”€β”€ utils.ts           # Test utilities and helpers
└── vitest.d.ts        # TypeScript declarations

e2e/                   # End-to-end tests
β”œβ”€β”€ pages/             # Page Object Model files
β”œβ”€β”€ global-setup.ts    # E2E global setup
β”œβ”€β”€ global-teardown.ts # E2E global cleanup
β”œβ”€β”€ auth.setup.ts      # Authentication setup for tests
└── *.spec.ts          # E2E test files

src/**/*.{test,spec}.{ts,vue}  # Unit test files

Test Coverage Requirements:

  • 60% minimum coverage for branches, functions, lines, and statements
  • Visual regression testing with Playwright screenshots
  • Component interaction testing with Vue Test Utils
  • API integration testing with MSW mocks

Project Scope

Core Features

  • DJ Registration & Profile Management: Create and edit profiles with mandatory biography and music styles
  • Calendar Management: Add, edit, and delete future events with up to one-year planning horizon
  • Search & Discovery: Browse all DJs with filtering by location, music style, availability, and name search
  • Public DJ Profiles: Accessible calendars with performance history and upcoming events
  • Social Media Integration: Contact DJs through Instagram/Facebook links
  • Mobile Responsive Design: Full functionality across all devices
  • Authentication System: Secure login/registration with email and password

Features NOT Included in MVP

  • Social features (comments, likes, sharing)
  • Event organizer accounts
  • Automatic event addition from external sources
  • Interactive planning calendar (only simple date selection)
  • User verification process
  • Conflict resolution for overlapping events
  • Marking unavailable days
  • Editing or deleting past events
  • Internal messaging system
  • Payment or booking system
  • Integration with external calendars

Technical Limitations

  • No real-time conflict resolution
  • DJs responsible for managing overlapping events
  • Simple, form-based event creation method
  • Contact exclusively through social media
  • No external login services (Google, GitHub)

Project Status

The project is currently in development. Initial focus is on implementing core features related to DJ profile management, calendar system, and search functionality.

Success Metrics

  • 90% of DJ users have filled calendars in the current month (at least one event)
  • 95% of profiles have complete biography and music styles
  • 80% of profiles have added social media contacts

License

MIT License


Project Structure:

  • ./src - Source code
  • ./src/layouts - Astro layouts
  • ./src/pages - Astro pages
  • ./src/pages/api - API endpoints
  • ./src/features/feature-1 - Feature client-side components (Astro static, Vue dynamic)
  • ./src/shared/components - Reusable client-side components (Astro static, Vue dynamic)
  • ./src/assets - Static internal assets
  • ./public - Public assets

About

Techno Ambassador is a global calendar platform dedicated to DJs that enables artists to showcase their availability and upcoming events while allowing fans and event organizers to discover and contact DJs for booking performances.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors