Academic / CourseworkWeb & Full-Stack~2 min read

Promptopia

Coursework training project exploring the Next.js App Router and NextAuth.

RoleFull-Stack Developer
TimelineJul 2023
DomainWeb & Full-Stack
Core StackNext.js, React, MongoDB

What I Built#

I built Promptopia as a practice project while learning full-stack development with the Next.js App Router. It is an open-source web application where users can discover, create, and share creative AI prompts for tools like ChatGPT and Midjourney.

Promptopia Application Feed
Click to view fullscreen
Promptopia Application Feed

Core Features#

  • Google OAuth Login: Users can sign in with their Google account using NextAuth.js.
  • Prompt CRUD: Authenticated users can create, edit, and delete their own prompt cards with custom tags (e.g. #webdev, #coding, #idea).
  • Tag & Keyword Search: A live search bar on the home feed filters prompts by tag, keyword, or creator username.
  • Copy to Clipboard: Quick copy button on each prompt card with visual confirmation.
  • User Profile Pages: Personalized profile feeds showing all prompts published by a specific creator.

Minimal Architecture#

architecture-diagram.txt
Browser (Next.js Client)
          │
    Google Sign-In
          ▼
┌──────────────────────────────┐
│  NextAuth.js Session Handler │ (JWT session cookie management)
└──────────────┬───────────────┘
               │
               ▼
┌──────────────────────────────┐
│  Next.js API Route Handlers  │ (app/api/prompt endpoints)
└──────────────┬───────────────┘
               │
               ▼
┌──────────────────────────────┐
│  MongoDB Database (Mongoose) │ (Prompts, Tags, User accounts)
└──────────────────────────────┘

What I Learned#

  • Working with Next.js App Router: Understanding where to use Server Components for fast data fetching and Client Components for interactivity (like the search bar and copy button).
  • OAuth Session Management: Wrapping layouts with a clean SessionProvider to manage authentication state across page navigations without state drops.
  • MongoDB Regex Search: Using simple MongoDB regex queries to match search terms across prompt body, tag strings, and usernames simultaneously.

Complete Technology Stack

Next.jsReactMongoDBNextAuth.jsTailwind CSS