108 lines
2.2 KiB
Markdown
108 lines
2.2 KiB
Markdown
# LUSA Back Planner
|
|
|
|
A project timeline generator for production teams. Set a deadline, pick a production lane, and get your timeline instantly. Supports PDF brief parsing, change requests, and PDF export.
|
|
|
|
## Tech Stack
|
|
|
|
- Vite + React + TypeScript
|
|
- Tailwind CSS + shadcn/ui
|
|
- pdfjs-dist (client-side PDF parsing)
|
|
- jsPDF + html2canvas (PDF export)
|
|
|
|
## Local Development
|
|
|
|
Requires Node.js 18+.
|
|
|
|
```bash
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
The dev server runs at `http://localhost:5173`.
|
|
|
|
To preview a production build locally:
|
|
|
|
```bash
|
|
npm run build
|
|
npm run preview
|
|
```
|
|
|
|
## Deploy to Ubuntu Server (Apache)
|
|
|
|
### 1. Build
|
|
|
|
```bash
|
|
npm install
|
|
npm run build
|
|
```
|
|
|
|
This creates a `dist/` folder with the static site.
|
|
|
|
### 2. Copy to server
|
|
|
|
```bash
|
|
scp -r dist/ user@your-server:/var/www/backplanner
|
|
```
|
|
|
|
### 3. Create Apache virtual host
|
|
|
|
Create `/etc/apache2/sites-available/backplanner.conf`:
|
|
|
|
```apache
|
|
<VirtualHost *:80>
|
|
ServerName your-domain.com
|
|
DocumentRoot /var/www/backplanner
|
|
|
|
<Directory /var/www/backplanner>
|
|
Options -Indexes
|
|
AllowOverride None
|
|
Require all granted
|
|
|
|
# SPA fallback - route all requests to index.html
|
|
FallbackResource /index.html
|
|
</Directory>
|
|
|
|
# Cache static assets (JS, CSS, images)
|
|
<FilesMatch "\.(js|css|png|jpg|ico|svg|woff2?)$">
|
|
Header set Cache-Control "public, max-age=31536000, immutable"
|
|
</FilesMatch>
|
|
</VirtualHost>
|
|
```
|
|
|
|
### 4. Enable and start
|
|
|
|
```bash
|
|
sudo a2enmod headers
|
|
sudo a2ensite backplanner.conf
|
|
sudo systemctl reload apache2
|
|
```
|
|
|
|
### 5. (Optional) Enable HTTPS with Let's Encrypt
|
|
|
|
```bash
|
|
sudo apt install certbot python3-certbot-apache
|
|
sudo certbot --apache -d your-domain.com
|
|
```
|
|
|
|
## Subdirectory Deploy
|
|
|
|
If hosting under a subdirectory (e.g. `your-server.com/backplanner/`), set the `base` option in `vite.config.ts` before building:
|
|
|
|
```ts
|
|
export default defineConfig({
|
|
base: "/backplanner/",
|
|
// ...
|
|
});
|
|
```
|
|
|
|
Then use an `Alias` in Apache instead of a separate virtual host:
|
|
|
|
```apache
|
|
Alias /backplanner /var/www/backplanner
|
|
<Directory /var/www/backplanner>
|
|
Options -Indexes
|
|
AllowOverride None
|
|
Require all granted
|
|
FallbackResource /backplanner/index.html
|
|
</Directory>
|
|
```
|