54 lines
1.1 KiB
Markdown
54 lines
1.1 KiB
Markdown
# OpenCloud
|
|
|
|
Vue 3 + Vite frontend with a Node/Express API, PostgreSQL, and local file storage.
|
|
|
|
## Development
|
|
|
|
1. Install dependencies:
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
2. Create the PostgreSQL schema:
|
|
|
|
```bash
|
|
psql "$DATABASE_URL" -f server/schema.sql
|
|
```
|
|
|
|
3. Start the API:
|
|
|
|
```bash
|
|
DATABASE_URL="postgres://..." JWT_SECRET="change-me" npm run dev:api
|
|
```
|
|
|
|
4. Start the frontend:
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
The Vite dev server proxies `/api/*` and `/uploads/*` to `http://localhost:3001`.
|
|
|
|
## Scripts
|
|
|
|
- `npm run dev` - Vite frontend dev server
|
|
- `npm run dev:api` - Express API with `tsx`
|
|
- `npm run build` - Vue typecheck and production frontend build
|
|
- `npm run typecheck:api` - Typecheck the Express API
|
|
- `npm run start:api` - Start the API with Node and `tsx`
|
|
|
|
## Environment
|
|
|
|
Frontend:
|
|
|
|
- `VITE_AMAP_KEY` - required for map features
|
|
- `VITE_SITE_URL` - optional canonical URL for generated SEO files
|
|
|
|
Backend:
|
|
|
|
- `DATABASE_URL` - PostgreSQL connection string
|
|
- `JWT_SECRET` - secret for HTTP-only JWT session cookies
|
|
- `PORT` - API port, defaults to `3001`
|
|
- `UPLOAD_ROOT` - optional upload directory, defaults to `server/uploads`
|