Skip to content

🎭 Artistly.com β€” a responsive artist booking app demo built with Next.js 15, Tailwind CSS, and Prisma for saving onboarded artists.

Notifications You must be signed in to change notification settings

Krisha1703/artistly

Repository files navigation

🎭 Artistly.com – Performing Artist Booking Platform

✨ Artistly.com is a functional, mobile-responsive full-stack demo of a fictional platform that connects Event Planners with Artist Managers.

Originally scoped as a frontend-only test, it now includes a real backend with Next.js server components, Prisma, and MongoDB for user authentication and artist submissions. It also uses TensorFlow.js with COCO-SSD to ensure profile images are appropriate.


πŸ“Œ Project Overview

  • Event Planners can:

    • Browse artist categories and profiles.
    • Filter artists by fee, location, and category.
    • Request quotes (demo action).
  • Artist Managers can:

    • Onboard new artists via a multi-step, validated form.
    • Store artist data in a MongoDB database.
    • View artist submissions and manage leads through a simple dashboard.

πŸ”’ Note: Some data, like testimonials and analytics, still use static JSON/mock files.


πŸ“Έ Profile Image Appropriateness Check

Artistly uses TensorFlow.js with the COCO-SSD model to detect people and possible text-like objects in profile images.
If the image:

  • βœ”οΈ Contains at least one person
  • ❌ Contains no text-like elements

…it will be approved!

Examples:

βœ… Approved:

Profile Aapproved

❌ Unapproved Examples:

Profile Unapproved 1 Profile Unapproved 2


πŸŽ₯ Project Video Demo

Watch the demo video

πŸ‘‰ Click here to watch the full video on YouTube


πŸš€ Tech Stack

  • Next.js 15 (App Router) β€” modern app router and react server components
  • React functional components & hooks β€” useState, useEffect, useContext for state management and side effects
  • Prisma ORM β€” for database operations with MongoDB
  • React Hook Form + Yup β€” for robust form handling and validation
  • Tailwind CSS β€” utility-first styling for responsive UI
  • Framer Motion β€” page & component animations
  • Zustand β€” simple state management
  • MUI Icons β€” icon library support
  • Suspense β€” with custom Loading fallback for streaming routes
  • TensorFlow.js + COCO-SSD β€” smart profile image validation (person detected, no text)

πŸ“‚ Project Structure Highlights

πŸ“¦ artistly/
β”œβ”€β”€ Actions/               # Server actions (login, register, fetch, onboard artist)
β”‚   β”œβ”€β”€ fetch-artist.js
β”‚   β”œβ”€β”€ login.js
β”‚   β”œβ”€β”€ register.js
β”‚   β”œβ”€β”€ onboard-artist.js
β”‚
β”œβ”€β”€ Context/               # Global React Context
β”‚   β”œβ”€β”€ theme-context.js   # Theme toggling (light/dark)
β”‚
β”œβ”€β”€ Hooks/                 # Custom hooks
β”‚   β”œβ”€β”€ use-fetch-artist.js # useEffect + useState logic
β”‚
β”œβ”€β”€ Lib/                   # Integrations & Prisma client
β”‚   β”œβ”€β”€ cloudinary.js
β”‚   β”œβ”€β”€ cloudinary-upload.js
β”‚   β”œβ”€β”€ prisma/
β”‚   β”‚   β”œβ”€β”€ schema.prisma
β”‚   β”‚   β”œβ”€β”€ db.js
β”‚
β”œβ”€β”€ Schemas/               # Yup validation schemas
β”‚   β”œβ”€β”€ login-schema.js
β”‚   β”œβ”€β”€ register-schema.js
β”‚   β”œβ”€β”€ onboarding-schema.js
β”‚
β”œβ”€β”€ Utils/                 # Shared helper functions
β”‚   β”œβ”€β”€ getUserByEmail.js
β”‚
β”œβ”€β”€ Public/                # Static assets & images
β”‚   β”œβ”€β”€ images/
β”‚   β”œβ”€β”€ screenshots/
β”‚
β”œβ”€β”€ src/app/               # Next.js App Router structure
β”‚   β”œβ”€β”€ page.js            # Homepage
β”‚   β”œβ”€β”€ loading.js         # Suspense fallback
β”‚   β”œβ”€β”€ artists/page.js    # Artist listing page
β”‚   β”œβ”€β”€ onboard/page.js    # Onboard artist form
β”‚   β”œβ”€β”€ dashboard/page.js  # Manager dashboard
β”‚   β”œβ”€β”€ state/store.js     # Zustand store
β”‚   β”œβ”€β”€ globals.css        # Tailwind base styles
β”‚
β”œβ”€β”€ components/            # Reusable UI components
β”‚   β”œβ”€β”€ navbar/            # Navigation bar
β”‚   β”œβ”€β”€ hero/              # Hero section
β”‚   β”œβ”€β”€ explore-artists/   # ArtistCard, FilterPanel
β”‚   β”œβ”€β”€ onboard-artists/   # Onboarding form sections
β”‚   β”œβ”€β”€ dashboard/         # Dashboard table & charts
β”‚   β”œβ”€β”€ testimonials/      # Testimonials section
β”‚   β”œβ”€β”€ footer/            # Footer with motion
β”‚
β”œβ”€β”€ data/                  # Mock/static data
β”‚   β”œβ”€β”€ artists.js
β”‚   β”œβ”€β”€ dashboard.js
β”‚   β”œβ”€β”€ testimonials.js
β”‚
β”œβ”€β”€ .env                   # Environment variables (DB, Cloudinary)
β”œβ”€β”€ package.json
β”œβ”€β”€ next.config.js
└── README.md

πŸ“± Pages & Features

βœ… Homepage: Hero Section Hero section, category cards, and smooth Framer Motion animations.

βœ… Explore Artists: Explore Artists Artist cards grid with responsive filter panel. Data fetched from MongoDB via custom useFetchArtists hook that uses useEffect for side effects.

βœ… Onboard Artist: Onboarding Artist Multi-section form with file upload and dropdowns. Yup schemas + React Hook Form for real-time validation.

βœ… Manager Dashboard: Displays artist submissions stored in the database. Static data used for testimonials and charts. Manager Dashboard

βœ… Suspense & Performance: Root layout wraps pages in <Suspense> with a custom <Loading /> component to handle server component streaming.

βœ… Dark Mode & Theme Context: Theme toggling implemented globally via React Context.


🌐 SEO & Accessibility

  • Next.js component: Optimized image loading with priority and loading="lazy" where appropriate.
  • Alt text for all images: Images include descriptive alt tags.
  • Accessible form fields: Inputs include aria-labels and linked tags.
  • Semantic HTML: Proper use of , ,
    , , and for better readability and screen reader support.
  • Dynamic Imports with next/dynamic: Heavy or client-only components β€” like charts, dashboard widgets, or large UI blocks β€” are loaded dynamically using next/dynamic for code splitting.

πŸ§ͺ Test Manager Account

To test the manager dashboard:

Email: artistly@manager.com Password: test123


πŸ₯ͺ Running Locally

  1. Clone the repo:

    git clone https://github.com/Krisha1703/artistly.git
    cd artistly
  2. Install dependencies:

    npm install
  3. Generate Prisma Client:

    npx prisma generate
  4. Start the dev server:

    npm run dev

    Open http://localhost:3000 to view the app.


πŸ“¦ Deployment

Deployed on Vercel: krisha-artistly-app.vercel.app


About

🎭 Artistly.com β€” a responsive artist booking app demo built with Next.js 15, Tailwind CSS, and Prisma for saving onboarded artists.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published