https://github.com/codeyousef/summon-portfolio
https://github.com/codeyousef/summon-portfolio
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/codeyousef/summon-portfolio
- Owner: codeyousef
- Created: 2025-11-07T07:35:42.000Z (8 months ago)
- Default Branch: master
- Last Pushed: 2026-01-12T17:01:40.000Z (5 months ago)
- Last Synced: 2026-01-12T21:56:53.475Z (5 months ago)
- Language: Kotlin
- Size: 5.63 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Yousef — Portfolio · Blog · Docs
A single Ktor + Summon stack powering three surfaces:
- Portfolio: featured work, services, contact
- Blog: long-form notes and release write-ups (EN/AR)
- Docs: multi-page product manuals with sidebar, search, and deep links
Live:
- https://www.yousef.codes — portfolio, services, blog, admin
- https://summon.yousef.codes — docs (Summon, more coming)
Tech:
- Kotlin (JVM, JS), Ktor, Summon UI, SSR + hydration
- Type-safe modifiers, portals, async validation, and responsive components
## Running Locally
```bash
# Development mode (uses local file storage)
./gradlew run
# Build and run with Docker (with persistent storage)
docker-compose up -d
# Or manual Docker with named volume for persistence
docker build -t portfolio .
docker run -d -p 8080:8080 -v portfolio-data:/app/storage portfolio
```
## Deployment Notes
**Data Persistence**: The admin credentials and content are stored in `/app/storage/` inside the container. To persist data across container restarts:
- **Docker Compose**: Uses a named volume `portfolio-data` by default
- **Docker**: Use `-v portfolio-data:/app/storage` or bind mount a host directory
- **Kubernetes**: Create a PersistentVolumeClaim mounted at `/app/storage`
Environment variables:
- `PORTFOLIO_CONTENT_PATH` - Path to content.json (default: `/app/storage/content.json`)
- `ADMIN_CREDENTIALS_PATH` - Path to admin-credentials.json (default: `/app/storage/admin-credentials.json`)
- `USE_LOCAL_STORE` - Set to `true` to use file storage instead of Firestore
Contributing:
- Open issues with a clear scope; include URLs/sections and screenshots if visual
- Localization in EN/AR; match copy tone and direction
© 2025 Yousef. All rights reserved.