A web platform for creating, connecting to, and managing Google Cloud Engine virtual machines.
- Create and manage GCE virtual machines
- Configure init scripts for VMs
- Manage firewall rules and expose ports
- Connect to GCP account via OAuth
- Simple, clean interface built with React and Tailwind CSS
- Frontend: React, Vite, TypeScript, Tailwind CSS, React Query
- Backend: Hono, Drizzle ORM, PostgreSQL
- Common: Shared TypeScript types package
- Infrastructure: Google Cloud Compute Engine API
├── packages/
│ ├── frontend/ # React frontend application
│ ├── backend/ # Hono API server
│ └── types/ # Shared TypeScript types
├── package.json # Root package.json for monorepo
└── tsconfig.json # Root TypeScript config
- Install dependencies:
npm install- Create the PostgreSQL database:
First, ensure you have PostgreSQL installed and the orchestrator user created:
# Create the orchestrator user (if not exists)
sudo -u postgres createuser orchestrator -PThen create the database:
# Option 1: Using the shell script
npm run db:create
# Option 2: Using SQL directly
npm run db:create:sql- Set up environment variables:
Backend (.env in packages/backend):
DATABASE_URL=postgres://orchestrator:orchestrator@localhost:5432/orchestrator
PORT=3000
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
GOOGLE_REDIRECT_URI=http://localhost:3000/api/auth/google/callback
- Set up the database schema:
cd packages/backend
npm run db:generate
npm run db:migrate- Run the development servers:
# From root directory
npm run devThis will start:
- Backend server on http://localhost:3000
- Frontend dev server on http://localhost:5173
- Create a new project in Google Cloud Console
- Enable the Compute Engine API
- Create OAuth 2.0 credentials
- Add authorized redirect URI:
http://localhost:3000/api/auth/google/callback - Add the client ID and secret to your backend .env file
npm run build- Build all packagesnpm run typecheck- Run TypeScript type checkingnpm run lint- Run ESLint on all packages