|
| 1 | +# OpenSandbox Dashboard |
| 2 | + |
| 3 | +A modern dashboard UI for OpenSandbox built with TanStack Router, TanStack Query, and WorkOS AuthKit. |
| 4 | + |
| 5 | +## Tech Stack |
| 6 | + |
| 7 | +- **Framework**: React 18 + TypeScript |
| 8 | +- **Build Tool**: Vite |
| 9 | +- **Routing**: TanStack Router (file-based routing) |
| 10 | +- **Data Fetching**: TanStack Query |
| 11 | +- **Authentication**: WorkOS AuthKit |
| 12 | +- **Styling**: Tailwind CSS |
| 13 | +- **Icons**: Lucide React |
| 14 | + |
| 15 | +## Getting Started |
| 16 | + |
| 17 | +### Prerequisites |
| 18 | + |
| 19 | +- Node.js 18+ |
| 20 | +- npm or pnpm |
| 21 | + |
| 22 | +### Installation |
| 23 | + |
| 24 | +```bash |
| 25 | +cd dashboard |
| 26 | +npm install |
| 27 | +``` |
| 28 | + |
| 29 | +### Configuration |
| 30 | + |
| 31 | +1. Create a `.env` file based on `.env.example`: |
| 32 | + |
| 33 | +```bash |
| 34 | +cp .env.example .env |
| 35 | +``` |
| 36 | + |
| 37 | +2. Configure your WorkOS credentials: |
| 38 | + |
| 39 | +```env |
| 40 | +VITE_WORKOS_CLIENT_ID=client_XXXXXXXXXXXXX |
| 41 | +``` |
| 42 | + |
| 43 | +Get your WorkOS Client ID from the [WorkOS Dashboard](https://dashboard.workos.com). |
| 44 | + |
| 45 | +### Development |
| 46 | + |
| 47 | +```bash |
| 48 | +npm run dev |
| 49 | +``` |
| 50 | + |
| 51 | +The dashboard will be available at `http://localhost:5173`. |
| 52 | + |
| 53 | +### Build |
| 54 | + |
| 55 | +```bash |
| 56 | +npm run build |
| 57 | +``` |
| 58 | + |
| 59 | +### Preview Production Build |
| 60 | + |
| 61 | +```bash |
| 62 | +npm run preview |
| 63 | +``` |
| 64 | + |
| 65 | +## Project Structure |
| 66 | + |
| 67 | +``` |
| 68 | +dashboard/ |
| 69 | +├── public/ |
| 70 | +│ └── favicon.svg |
| 71 | +├── src/ |
| 72 | +│ ├── routes/ |
| 73 | +│ │ ├── __root.tsx # Root layout |
| 74 | +│ │ ├── index.tsx # Landing page |
| 75 | +│ │ ├── _authenticated.tsx # Auth layout wrapper |
| 76 | +│ │ └── _authenticated/ |
| 77 | +│ │ └── dashboard/ |
| 78 | +│ │ ├── index.tsx # Dashboard overview |
| 79 | +│ │ ├── sandboxes.tsx # Sandboxes management |
| 80 | +│ │ └── settings.tsx # User settings |
| 81 | +│ ├── index.css # Global styles + Tailwind |
| 82 | +│ ├── main.tsx # App entry point |
| 83 | +│ └── vite-env.d.ts # Type declarations |
| 84 | +├── index.html |
| 85 | +├── package.json |
| 86 | +├── tailwind.config.js |
| 87 | +├── tsconfig.json |
| 88 | +└── vite.config.ts |
| 89 | +``` |
| 90 | + |
| 91 | +## Features |
| 92 | + |
| 93 | +- 🎨 **Beautiful UI**: Custom sand/obsidian color palette with glass morphism effects |
| 94 | +- 🔐 **Authentication**: Secure login with WorkOS AuthKit (SSO, Social Login, etc.) |
| 95 | +- 📱 **Responsive**: Mobile-friendly design |
| 96 | +- ⚡ **Fast**: Vite for instant HMR, TanStack Router for type-safe routing |
| 97 | +- 🌙 **Dark Theme**: Elegant dark mode by default |
| 98 | + |
| 99 | +## Customization |
| 100 | + |
| 101 | +### Colors |
| 102 | + |
| 103 | +The color palette is defined in `tailwind.config.js`: |
| 104 | + |
| 105 | +- `sand-*`: Warm amber/gold accent colors |
| 106 | +- `obsidian-*`: Dark gray/slate background colors |
| 107 | + |
| 108 | +### Fonts |
| 109 | + |
| 110 | +- **Display**: Instrument Sans (headings, UI) |
| 111 | +- **Mono**: JetBrains Mono (code, terminals) |
| 112 | + |
| 113 | +## License |
| 114 | + |
| 115 | +MIT |
| 116 | + |
0 commit comments