GudCalGudCal
Docs
Installation

Installation

Get GudCal running locally for development or evaluation.

Clone the Repository

git clone https://github.com/cavewebs/gudcal.git
cd gudcal

Install Dependencies

GudCal uses pnpm as its package manager:

pnpm install

Configure Environment Variables

Copy the example environment file and fill in your values:

cp .env.example .env.local

Required variables:

.env.local
NEXT_PUBLIC_APP_URL=http://localhost:3000
 
AUTH_SECRET=your-random-secret-at-least-32-chars
GOOGLE_CLIENT_ID=your-google-oauth-client-id
GOOGLE_CLIENT_SECRET=your-google-oauth-client-secret
 
DATABASE_URL=postgresql://user:password@host:5432/gudcal
 
RESEND_API_KEY=your-resend-api-key

You can generate an AUTH_SECRET by running: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Set Up the Database

GudCal uses PostgreSQL with Prisma. Generate the Prisma client and push the schema to your database:

pnpm prisma generate
pnpm prisma db push

Make sure your PostgreSQL database is running and the DATABASE_URL in your .env.local file is correct before running these commands.

Start the Development Server

pnpm dev

GudCal will be available at http://localhost:3000.

Optional: Google Calendar Integration

To enable Google Calendar sync, you'll need separate OAuth credentials with calendar scopes. Add these to your .env.local:

GOOGLE_CALENDAR_CLIENT_ID=your-calendar-client-id
GOOGLE_CALENDAR_CLIENT_SECRET=your-calendar-client-secret
ENCRYPTION_KEY=your-32-byte-hex-encryption-key

Generate an encryption key:

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Next Steps