2025-08-18 22:51:57 +02:00
2025-08-18 12:48:45 +02:00
2025-08-18 22:51:57 +02:00
2025-08-18 22:51:57 +02:00
2025-08-18 17:26:49 +02:00
2025-08-18 12:48:45 +02:00
2025-08-18 17:26:49 +02:00
2025-08-18 14:41:17 +02:00

FireEntity Movie Nights

(WARNING: VIBECODING EXPERIMENT, MADE WITH GEMINI CLI AND QWEN CLI)

A Next.js application for organizing movie nights with voting and scheduling features.

Features

  • User Authentication: Sign in with Slack
  • Movie Suggestions: Users can suggest movies for movie nights
  • Voting System: Vote for your favorite suggested movies
  • Admin Panel: Approve movie suggestions and schedule movies
  • Calendar View: See what movies are scheduled for which dates
  • Responsive Design: Works on desktop and mobile

Getting Started

Prerequisites

  • Node.js 18+
  • PostgreSQL database
  • Slack app for authentication

Setup

  1. Clone the repository

    git clone <repository-url>
    cd fireentity-movienights
    
  2. Install dependencies

    npm install
    
  3. Environment Setup

    Copy .env.example to .env.local and fill in your values:

    cp .env.example .env.local
    
  4. Database Setup

    # Run migrations
    npx prisma migrate dev
    
    # Generate Prisma client
    npx prisma generate
    
  5. Slack App Configuration

    • Go to https://api.slack.com/apps
    • Create a new app for your workspace
    • Add OAuth redirect URL: http://localhost:3000/api/auth/callback/slack
    • Copy Client ID and Secret to your .env.local
  6. Run the development server

    npm run dev
    
  7. Visit the application

    Open http://localhost:3000 in your browser.

Admin Access

To make a user an admin:

  1. Sign in with the user account
  2. Manually update the database to set isAdmin = true for that user
  3. Or use Prisma Studio: npx prisma studio

Project Structure

src/
├── app/
│   ├── admin/           # Admin dashboard
│   ├── api/            # API routes
│   ├── suggest/        # Movie suggestion page
│   └── page.tsx        # Home page with calendar and voting
├── components/
│   ├── ui/             # Reusable UI components
│   └── MovieCalendar.tsx
├── lib/
│   ├── auth.ts         # Authentication configuration
│   └── utils.ts
└── prisma/
    └── schema.prisma   # Database schema

API Endpoints

  • GET /api/movies - Get approved movies
  • POST /api/movies - Suggest a new movie
  • POST /api/movies/[id]/vote - Vote for a movie
  • GET /api/admin/movies - Get unapproved movies (admin only)
  • POST /api/admin/movies/[id]/approve - Approve a movie (admin only)
  • GET /api/admin/schedule - Get movie schedule
  • POST /api/admin/schedule - Schedule a movie (admin only)
  • DELETE /api/admin/schedule - Remove scheduled movie (admin only)

Technologies Used

  • Frontend: Next.js 15, React 19, TypeScript, Tailwind CSS
  • Backend: Next.js API Routes, Prisma ORM
  • Database: PostgreSQL
  • Authentication: Better Auth with Slack OAuth
  • UI Components: Custom components with Tailwind
  • Calendar: React Calendar

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request
Description
No description provided
Readme 122 KiB
Languages
TypeScript 93.1%
CSS 6.8%
JavaScript 0.1%