A student-first platform for discovering institutions, exploring structured education profiles, and keeping your admission goals in one place.
Explore Next Bench β Β· Search Institutes Β· Report a Bug Β· Request a Feature
Choosing where to study should not mean jumping between dozens of tabs, scattered institute pages, random reviews, and half-finished notes.
Next Bench brings institute discovery and student planning into one clean experience. Students can search universities, colleges, and tuition providers, open structured education profiles, sign in, maintain their personal information, and save admission goals and target universities.
The application is built around a Next.js frontend backed by Supabase, with institute content stored in PostgreSQL and rendered dynamically from structured MDX-like data.
The idea is simple: spend less time searching for information and more time deciding what is actually right for you.
|
Search across universities, colleges, and tuition providers from a dedicated discovery interface. Institute results can surface useful information such as location, rating, description, tags, and dedicated profile routes. |
Every institute can have its own Profile content is loaded from Supabase and transformed into structured sections for richer education pages instead of hard-coded static routes. |
|
Authenticated students get a personal Student data is persisted through Supabase-backed profile records. |
Save a personal education goal and keep up to three target universities attached to your profile. It turns Next Bench from a directory into a lightweight student planning workspace. |
|
The UI supports persistent light and dark themes using client-side theme preferences. The interface is built with Once UI and custom styling for a modern, focused experience. |
Education data supports names, descriptions, ratings, city/state metadata, tags, and rich MDX content. The institute page renderer can translate that stored content into reusable interface sections. |
flowchart LR
U["Student"] --> N["Next.js 16 App"]
N --> S["Search Experience"]
N --> E["Education Profiles"]
N --> M["Student Workspace"]
N --> A["Authentication"]
S --> SB["Supabase"]
E --> SB
M --> SB
A --> SB
SB --> PG["PostgreSQL"]
PG --> D["edu + profiles data"]
E --> P["MDX / Content Parser"]
P --> R["Dynamic UI Sections"]
DK["Drizzle ORM / Kit"] --> PG
| Layer | Technology |
|---|---|
| Framework | Next.js 16 |
| UI Runtime | React 19 |
| Language | TypeScript 5.8 |
| Design System | Once UI |
| Styling | Tailwind CSS 4, Sass, custom CSS |
| Backend / Data | Supabase |
| Database | PostgreSQL |
| ORM / Schema | Drizzle ORM + Drizzle Kit |
| Smooth Motion | Lenis |
| Image Processing | Sharp |
| Formatting | Biome |
| Deployment | Vercel |
next-bench/
βββ backend/
β βββ python/ # Backend experimentation / workflow area
βββ drizzle/ # Database migration artifacts
βββ mdx/ # Education content / MDX resources
βββ next-parser/
β βββ parser.js # Content parsing utility
βββ public/
β βββ images/og/ # Social / preview assets
β βββ trademarks/
βββ src/
β βββ app/
β β βββ auth/ # Authentication flows
β β βββ edu/[slug]/ # Dynamic institute profiles
β β βββ me/ # Student profile + goals
β β βββ search/ # Institute discovery
β β βββ supabase/ # Supabase client
β β βββ ~/admin/ # Admin-facing route area
β β βββ components/ # App-level UI
β βββ components/
β βββ db/
β β βββ schema.ts # Drizzle schema
β βββ resources/ # Theme, config and styles
βββ drizzle.config.ts
βββ next.config.mjs
βββ package.json
βββ README.md
You will need:
- Node.js 20+
- npm
- a Supabase project
- a PostgreSQL connection string if you plan to use the Drizzle database tooling
git clone https://github.com/ThatKJ/next-bench.git
cd next-benchnpm installCreate a .env.local file in the root of the project:
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY=your_supabase_publishable_key
DATABASE_URL=your_postgresql_connection_string
NEXT_PUBLIC_SUPABASE_URLandNEXT_PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEYare required by the application at runtime.
DATABASE_URLis used by the Drizzle configuration.
If you use Drizzle Kit directly and your shell does not expose DATABASE_URL, also provide it through a root .env file or export it in your environment.
npm run devOpen:
http://localhost:3000
The current schema includes two core application domains:
Stores student information such as:
- name
- city / state / country
- phone
- personal goal
- target universities
- creation timestamp
Stores institute content such as:
- slug
- name
- description
- rating
- city
- state
- tags
- MDX content
The project includes Drizzle Kit as a development dependency, so you can use:
npx drizzle-kit generateand:
npx drizzle-kit migrateMake sure DATABASE_URL is configured before running database commands.
| Route | Purpose |
|---|---|
/ |
Landing page |
/search |
Search universities, colleges, and tuition providers |
/edu/[slug] |
Dynamic institute profile |
/auth/... |
Authentication flows |
/me |
Student profile, personal details, goals and target universities |
/~/admin |
Admin-facing route area |
| Command | Description |
|---|---|
npm run dev |
Start Next.js in development mode with Turbopack |
npm run build |
Create a production build |
npm run start |
Start the production server |
npm run lint |
Run the configured Next.js lint command |
npm run biome-write |
Format the repository with Biome |
npm run export |
Run the configured Next.js export command |
Next Bench is still evolving.
- Institute search experience
- Dynamic education profile pages
- Supabase authentication integration
- Student profile management
- Goals and target universities
- Light / dark theme support
- Personalized student roadmaps
Personalized roadmap generation is visible in the current student workspace, but is intentionally disabled until the feature is ready.
Contributions, bug reports, and ideas are welcome.
# Fork the repo, then clone your fork
git clone https://github.com/YOUR_USERNAME/next-bench.git
cd next-bench
# Create a branch
git checkout -b feature/your-feature
# Install dependencies
npm install
# Start development
npm run devWhen your changes are ready:
git add .
git commit -m "feat: describe your change"
git push origin feature/your-featureThen open a Pull Request.
Before submitting, please make sure the app builds successfully:
npm run buildNext Bench is under active development.
Some repository areasβincluding the Python workflow directory and personalized roadmap UIβare currently placeholders or incomplete and should not yet be treated as production features.
If you find something that does not work as expected, please open an issue.
This repository is maintained at ThatKJ/next-bench and is forked from sonamii/next-bench.
Credit to the original contributors and everyone who has helped shape the project.
Search smarter. Compare clearly. Keep your goals in sight.
If this project helps you, consider giving it a β
