Loading repository data…
Loading repository data…
robbdimitrov / repository
Modern image-sharing application delivering real-time visual feeds via responsive Svelte and a high-performance Go API.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Phasma is a full-stack image-sharing platform built with a production-grade architecture. Combining a robust Go API with a modern SvelteKit frontend, it provides a seamless experience for users to upload, browse, and interact with images.
@mention, #hashtag, and
URL links. Compose typeahead suggests users and hashtags as you type.# scopes results to hashtag-filtered posts.Cache-Control and ETag
headers.graph TD
Browser["Browser"]
subgraph cluster ["Kubernetes Cluster"]
Frontend["Frontend<br>(SvelteKit)"]:::frontend
Gateway["Backend<br>(Go)"]:::backend
subgraph data ["Data & Storage"]
DB[("PostgreSQL<br>(source of truth)")]:::database
Search[("Meilisearch<br>(search index)")]:::search
end
end
Browser --> Frontend
Frontend --> Gateway
Gateway --> DB & Search
classDef frontend fill:#0ea5e9,stroke:#0284c7,stroke-width:2px,color:#fff
classDef backend fill:#6366f1,stroke:#4f46e5,stroke-width:2px,color:#fff
classDef database fill:#f59e0b,stroke:#d97706,stroke-width:2px,color:#fff
classDef search fill:#06b6d4,stroke:#0891b2,stroke-width:2px,color:#fff
style cluster fill:transparent,stroke:#64748b
style data fill:transparent,stroke:transparent
| Service | Language | Description |
|---|---|---|
| frontend | TypeScript | SvelteKit SSR application; sole public entry point and BFF. |
| backend | Go | HTTP API handling users, sessions, images, likes, and uploads. |
| database | PostgreSQL | Versioned schema migrations managed by migrate/migrate. |
Six in-cluster services run alongside the application:
entity-changes and
activity events published by the backend outbox relay; consumed by
Redpanda Connect and the backend's
notifications-consumer and feed-consumer goroutines.Architectural specs live in docs/:
| Doc | Contents |
|---|---|
| architecture.md | Service topology, request flow, integration patterns |
| api.md | HTTP endpoints, middleware stack, pagination |
| data-model.md | Schema, indexes, entity relationships, domain invariants |
| security.md | Session model, password policy, ownership rules, rate limiting |
| business-rules.md | Validation constraints, ordering, content policy |
| frontend.md | Route map, layout hierarchy, SSR, data fetching |
| design-system.md | Theme, component inventory, layout |
| infrastructure.md | Kubernetes resources, secrets, probes, storage |
Deploy the application to your active Kubernetes cluster using the provided script:
./scripts/deploy.sh
The script builds the Docker images, creates the Kubernetes namespace (phasma
by default) and resources, waits for pods to be ready, and starts a port-forward
to the frontend at http://localhost:8080/. It is idempotent and safe to re-run
for updates.
To remove all deployed resources and the namespace:
kubectl delete -f ./deploy -n phasma
kubectl delete namespace phasma
Run all unit tests across the frontend and backend:
make test
Licensed under the MIT License.