Set up Siteforge container deployment and registry publishing
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
# Siteforge
|
||||
|
||||
This project is a React + TypeScript portfolio app built with Vite.
|
||||
|
||||
It is designed to showcase two categories of work:
|
||||
|
||||
- Websites
|
||||
- Apps
|
||||
|
||||
The app now supports:
|
||||
|
||||
- Dynamic cards generated from a project data source
|
||||
- Built vs Hosted filters
|
||||
- A dedicated About page route for each project
|
||||
- An admin editor route to update cards and About pages
|
||||
|
||||
## Run locally
|
||||
|
||||
```bash
|
||||
npm install
|
||||
npm run dev:full
|
||||
```
|
||||
|
||||
`dev:full` starts both:
|
||||
|
||||
- Vite frontend (`http://localhost:5173`)
|
||||
- Admin content API (`http://localhost:4173`)
|
||||
|
||||
## Build for production
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
## Run in container
|
||||
|
||||
Pull image directly:
|
||||
|
||||
```bash
|
||||
docker pull ghcr.io/nmemmert/siteforge:latest
|
||||
docker run -d --name siteforge-app -p 4173:4173 -v ./data:/app/data ghcr.io/nmemmert/siteforge:latest
|
||||
```
|
||||
|
||||
Run with Docker Compose:
|
||||
|
||||
```bash
|
||||
docker compose pull
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
The app will be available at `http://localhost:4173`.
|
||||
|
||||
Persistent admin saves:
|
||||
|
||||
- Admin updates are written to `data/admin-content.json`.
|
||||
- `docker-compose.yml` mounts `./data` into the container at `/app/data`.
|
||||
- This keeps your edits after container restarts/rebuilds.
|
||||
|
||||
## Where to edit content
|
||||
|
||||
- Project domain data and ownership: `src/data/projects.ts`
|
||||
- Portfolio rendering logic: `src/App.tsx`
|
||||
- Portfolio UI styles: `src/App.css`
|
||||
- Global theme variables: `src/index.css`
|
||||
|
||||
## Routes
|
||||
|
||||
- Portfolio home: `/`
|
||||
- Project details: `/projects/:slug`
|
||||
- Admin editor: `/admin`
|
||||
|
||||
## Admin editing
|
||||
|
||||
- Open `/admin` to edit project card and featured-page content.
|
||||
- Edit the **Main Site Header** section to update the home page header and project page eyebrow.
|
||||
- Edit **Quick tips title/body** in the same section.
|
||||
- Use **Create new entry** to add a new project directly from Admin.
|
||||
- Enter a URL and click **Scan URL metadata** to auto-fill title, summary, domain, category, and icon when available.
|
||||
- Click **Save project** to apply updates instantly.
|
||||
- Saved edits are written to `data/admin-content.json` through the API server.
|
||||
- Use the **Theme** dropdown to switch between Sandstone, Ocean, and Midnight.
|
||||
- Use **Remove project** to delete the selected project from your local Admin data.
|
||||
- Use **Reset project** or **Reset all** to restore defaults from `src/data/projects.ts`.
|
||||
|
||||
Scan notes:
|
||||
|
||||
- URL scanning is best-effort and depends on site accessibility.
|
||||
- Some sites block direct scanning; Admin falls back to a proxy scan path when possible.
|
||||
- Always review scanned fields before saving.
|
||||
|
||||
Deployment note:
|
||||
|
||||
- To keep Admin saves working on the internet, deploy with the Node API (`server.js`) and writable server storage for `data/admin-content.json`.
|
||||
|
||||
Useful container commands:
|
||||
|
||||
```bash
|
||||
docker compose logs -f
|
||||
docker compose down
|
||||
```
|
||||
|
||||
Update to latest image:
|
||||
|
||||
```bash
|
||||
docker compose pull
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- The current project cards are sample placeholders.
|
||||
- Most metadata was scanned from live pages.
|
||||
- Skywatch currently uses a manual fallback description due to a `401` response during automated scan.
|
||||
Reference in New Issue
Block a user