A personal software workspace where I build and use the tools I need.
- Bun (>1.3.3) - Required as both package manager and runtime
- Install from bun.sh
- PostgreSQL - Database server (local or cloud instance)
-
Clone the repository:
git clone <repository-url> cd space
-
Install dependencies:
bun install
-
Copy the example environment file:
cp .env.example .env
-
Configure the following environment variables in
.env:PostgreSQL connection string.
Format:
postgresql://username:password@host:port/databaseExample for local PostgreSQL:
DATABASE_URL=postgresql://postgres:password@localhost:5432/spaceSecret key used for JWT token signing. Generate a secure random string:
openssl rand -base64 32
Example:
AUTH_SECRET=your-generated-secret-key-hereCredentials from your GitHub OAuth App.
- Go to GitHub Settings → Developer settings → OAuth Apps
- Create a new OAuth App
- Set Authorization callback URL to:
http://localhost:8008/api/auth/callback/github - Copy the Client ID and Client Secret to your
.envfile
Example:
GITHUB_CLIENT_ID=your-github-client-id GITHUB_CLIENT_SECRET=your-github-client-secretEmail address of the user who will have access to the application. Only this user will be able to authenticate and access the application - all other users will be denied access.
Example:
ADMIN_EMAIL=admin@example.comAPI key for OpenWeatherMap, needed to fetch weather data within the app.
You can get a free API key by signing up at https://openweathermap.org/api.
Example:
OPENWEATHER_API_KEY=your-openweather-api-key-here
- Push the database schema:
bun run db:push
Start the development server:
bun run devThe application will be available at http://localhost:8008.
bun run dev- Start development server on port 8008bun run build- Build the application for productionbun run start- Start production serverbun run lint- Run ESLintbun run type-check- Run TypeScript type checkingbun run format- Format code with Prettierbun run db:push- Push database schema changesbun run db:pull- Pull database schemabun run db:studio- Open Drizzle Studio for database management