A modern web application built with Next.js, Firebase, and Transformers.js that helps organizers host events and automatically prevent identical or highly-similar projects from being registered.
- Custom Event Creation: Organizers can spin up new events, toggle public/private visibility, and construct custom registration forms with text, date, or dropdown fields.
- In-Browser AI Similarity Check: An embedded machine learning model (
all-MiniLM-L6-v2via@xenova/transformers) runs completely client-side. It analyzes project titles and abstracts to ensure uniqueness. - Duplicate Prevention Gate: When organizers toggle "Enable Abstract Similarity Check," the platform blocks any registration whose abstract has a semantic similarity score
≥ 60%compared to previously approved projects. - Real-time Database & Auth: Built securely with Firebase Authentication and Firestore to manage users, events, and participant data.
- Beautiful UI: Glassmorphism, deep dark themes, and rich interactive components powered by Tailwind CSS v4.
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS 4
- Backend & DB: Firebase (Firestore, Auth)
- Local AI: @xenova/transformers
npm installCreate a .env.local file in the root directory and add your Firebase configurations:
NEXT_PUBLIC_FIREBASE_API_KEY="your_api_key"
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN="your_auth_domain"
NEXT_PUBLIC_FIREBASE_PROJECT_ID="your_project_id"
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET="your_storage_bucket"
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID="your_sender_id"
NEXT_PUBLIC_FIREBASE_APP_ID="your_app_id"
NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID="your_measurement_id"(Make sure .env.local is listed in your .gitignore so you don't leak your keys when pushing to GitHub).
npm run devOpen http://localhost:3000 with your browser to see the result.
The application uses Transformers.js to pull the lightweight all-MiniLM-L6-v2 NLP model directly into the browser's memory without needing expensive backend GPUs:
- Calculates multi-dimensional vector embeddings for the title and abstract text.
- Performs a Cosine Similarity mathematical check against existing abstracts tied to the event.
- Automatically blocks duplicate scopes if the calculated overlap breaches the
0.6(60%) combined similarity threshold.
The easiest way to deploy your Next.js app is to use the Vercel Platform. Make sure to define your Environment Variables in the Vercel dashboard prior to building.