Compare commits

...

3 Commits

Author SHA1 Message Date
38fadf32f6 feat: add Movies Diary logo to project entry
All checks were successful
Build and Deploy Gabriel Kaszewski Portfolio / build-and-deploy-local (push) Successful in 1m40s
2026-05-13 23:56:07 +02:00
1dfb80cbb2 feat: add Movies Diary logo to K-Suite 2026-05-13 23:54:45 +02:00
764e419a32 feat: add Movies Diary to projects and K-Suite 2026-05-13 23:53:38 +02:00
3 changed files with 38 additions and 1 deletions

View File

@@ -74,6 +74,18 @@ const kSuiteApps: KSuiteApp[] = [
technologies: ["Rust", "Next.js", "TailwindCSS"],
color: "from-violet-400 to-purple-500",
},
{
id: 6,
name: "Movies Diary",
shortDescription: "Self-hosted movie logging with federation",
description:
"Log every film you watch, rate it, and share reviews across the Fediverse via ActivityPub. Federate with other instances, follow remote users, and browse a fully federated activity feed.",
url: "https://movies.gabrielkaszewski.dev/",
githubUrl: "https://github.com/GKaszewski/movies-diary",
icon: "/images/movies-diary.webp",
technologies: ["Rust", "Axum", "ActivityPub", "SQLite"],
color: "from-rose-400 to-red-500",
},
];
// Connection definitions for the organism
@@ -82,10 +94,12 @@ const connections = [
{ from: 1, to: 2 }, // Thoughts -> K-Tuner
{ from: 2, to: 3 }, // K-Tuner -> K-QR
{ from: 3, to: 4 }, // K-QR -> K-TV
{ from: 4, to: 0 }, // K-TV -> K-Notes
{ from: 4, to: 5 }, // K-TV -> Movies Diary
{ from: 5, to: 0 }, // Movies Diary -> K-Notes
{ from: 0, to: 2 }, // K-Notes -> K-Tuner (cross)
{ from: 1, to: 3 }, // Thoughts -> K-QR (cross)
{ from: 2, to: 4 }, // K-Tuner -> K-TV (cross)
{ from: 5, to: 1 }, // Movies Diary -> Thoughts (federation)
];
const KSuiteOrganism = () => {

View File

@@ -455,6 +455,29 @@ export const projects: Project[] = [
thumbnails: ["/images/galeria_rumia.avif", "/images/galeria_rumia2.avif"],
commercial: true,
},
{
id: 24,
name: "Movies Diary",
short_description:
"Self-hosted movie logging with ActivityPub federation.",
description:
"A self-hosted, server-side rendered movie logging system with a full REST API. Built entirely in Rust with no JavaScript in the HTML interface — just HTML forms and an RSS feed.\n\n**Highlights:**\n- Immutable, append-only viewing ledger (tracks re-watches)\n- ActivityPub federation — follow remote users, broadcast reviews as federated Notes, shared inbox, paginated outbox\n- Full-text search via SQLite FTS5 or PostgreSQL tsvector + GIN\n- Background poster fetching, TMDB enrichment (cast, crew, genres, box office), image conversion to AVIF/WebP\n- File importer: CSV, TSV, JSON, XLSX from Letterboxd, IMDb, etc.\n- Dual database support: SQLite and PostgreSQL\n- Terminal UI client\n- OpenAPI documentation (Swagger UI + Scalar)\n\n**Technical details:**\n- **Architecture:** Hexagonal (Ports & Adapters) with DDD\n- **Backend:** Rust, Axum, SQLx\n- **Templates:** Askama (SSR)\n- **Event bus:** SQLite/PostgreSQL queue or NATS JetStream\n- **Federation:** ActivityPub (AP)",
category: "Web",
github_url: "https://github.com/GKaszewski/movies-diary",
visit_url: "https://movies.gabrielkaszewski.dev/",
download_url: null,
technologies: [
"Rust",
"Axum",
"SQLite",
"PostgreSQL",
"ActivityPub",
"Askama",
"NATS",
"Docker",
],
thumbnails: ["/images/movies-diary.webp"],
},
{
id: 23,
name: "Pixel palette colorizer",

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB