Skip to main content
This guide walks you through setting up TechCal for local development.

Prerequisites

Before you begin, ensure you have the following installed:
1

Node.js 20.9+

TechCal requires Node.js 20.9 or higher (LTS recommended).
node --version
# Should output v20.9.0 or higher
2

npm Package Manager

npm is included with Node.js. Verify installation:
npm --version
3

Supabase Account

Create a free account at supabase.com and set up a new project.You’ll need:
  • Project URL
  • Anon (public) key
  • Service role key (for server-side operations)

Clone the Repository

Clone the TechCal source code:
git clone <repository-url>
cd tech-cal

Install Dependencies

Install all required packages:
npm install
This will install all dependencies defined in package.json, including:
  • Next.js 15 (App Router)
  • React 19
  • Supabase client libraries
  • UI libraries (Tailwind, Radix UI, MUI)
  • Testing frameworks (Vitest, Playwright)
  • And more

Database Setup

1

Run Supabase Migrations

Apply all database migrations to set up tables, functions, and policies:
supabase migration up
This creates the necessary database schema for:
  • User profiles and authentication
  • Events and recommendations
  • Analytics and telemetry
  • Ingestion pipeline
  • Social features (following, blocking)
2

(Optional) Set Admin User

If you need admin access to the ingestion moderation dashboard:
  1. Get your user UUID from Supabase Dashboard → Authentication → Users
  2. Run this SQL query:
UPDATE profiles SET is_admin = TRUE WHERE id = 'YOUR_UUID';
See docs/SET_ADMIN_USER.md in the source repository for detailed instructions.

Configure Environment Variables

Create a .env.local file in the project root with your Supabase credentials:
.env.local
# Required - Supabase Configuration
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_service_role_key

# Required for Ingestion Cron Jobs
CRON_SECRET=generate_with_openssl_rand_hex_32

# Optional - Feature Toggles
NEXT_PUBLIC_ENABLE_BEHAVIORAL_BOOST=true
NEXT_PUBLIC_ENABLE_DIVERSITY_ENHANCEMENT=true

# Optional - Scoring Strategy
DISCOVERY_SCORING=server
DISCOVERY_RERANK=advanced
See the Environment Variables page for a complete reference of all available configuration options.

Run Development Server

Start the development server:
npm run dev
The app will be available at http://localhost:3000.

Verify Installation

1

Access the Application

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

Complete Onboarding

Protected routes require:
  1. Supabase authentication (sign up/sign in)
  2. Completion of the onboarding flow at /onboarding/career
The onboarding captures:
  • Current role and career stage
  • Professional goals
  • Skills and interests
  • Event preferences
3

Explore Core Features

After onboarding, you can access:
  • /discover - Personalized event recommendations
  • /calendar - Your event calendar
  • /dashboard - Career analytics and progress
  • /community - Professional networking

Common Issues

Port 3000 Already in Use

If port 3000 is occupied, Next.js will automatically try port 3001, 3002, etc. Or specify a custom port:
PORT=3001 npm run dev

Database Connection Errors

Verify your Supabase credentials in .env.local:
  • URL should be in format: https://your-project.supabase.co
  • Keys should be copied exactly from Supabase dashboard
  • Service role key is required for server-side operations

Missing Dependencies

If you see module errors, try clearing cache and reinstalling:
rm -rf node_modules package-lock.json
npm install

Next Steps

Environment Variables

Configure all environment variables and feature flags

Testing

Run unit and integration tests with Vitest

Project Structure

Understand the codebase organization

Testing Guide

Learn how to write and run tests

Build docs developers (and LLMs) love