Domain / Industry: Technology

Solo designer & full-stack developer · Jun 2026 – Present · ~1 mo

Web & desktop

Problem

Traditional online portfolios often suffer from information overload, requiring visitors to navigate static pages and menus to find relevant details. Recruiters and hiring managers need a fast way to assess fit, while the site still must remain SEO-friendly, linkable, and trustworthy when an AI answers questions about real experience.

Approach

NotNull Online reimagines the personal portfolio as an AI-first experience. Visitors ask natural-language questions and receive streaming, source-cited answers grounded in a single knowledge_items content model. The platform refuses to invent projects, employers, or skills when retrieval finds no evidence.

The backend is organized as Hexagonal Architecture (Ports & Adapters):

  • Domain — entities, value objects, and outbound port traits (repositories, AI, search, storage, email, auth, PDF, deploy) with no framework or cloud dependencies
  • Application — use-case services (chat, RAG, admin, content, embeddings, SEO, contact) that orchestrate ports only
  • Infrastructure — MongoDB, OpenAI/Gemini, S3, SES, JWT/Argon2, Typst PDF, GitHub Actions deploy adapters
  • API — Axum handlers and DTOs as the driving adapter; lib.rs is the composition root that wires AppState

Product strategy stays hybrid: RAG chat for discovery, prerendered public pages for SEO and direct links.

Key Features

  • RAG-powered chat — Hybrid retrieval (Atlas Vector Search + Atlas Search), SSE streaming, source citations, follow-up suggestions, grounded validation/fallback so answers stay evidence-based
  • Chat-driven navigation — Routes visitors to project, experience, and article pages from conversation
  • Single-admin CMS — CRUD across content types, media uploads, AI-assisted authoring drafts, reindex
  • SEO without cloaking — Prerendered listings/details, sitemap, Open Graph; Lighthouse SEO ≥ 90
  • Production deploy — Admin-triggered public rebuild via GitHub Actions (OIDC → AWS)
  • EU AI Act transparency — Homepage disclosure, labeled assistant responses, privacy policy, internal compliance docs

Architecture (high level)

Browser (Angular 22)
    ↓  REST + SSE
Axum API (driving adapter)
    ↓
Application services (chat, RAG, admin, content, …)
    ↓  domain ports
Infrastructure adapters → MongoDB Atlas | OpenAI/Gemini | S3 | SES | GitHub Actions

Dependency rule: domain never depends on adapters; adapters implement ports; the composition root in lib.rs wires concrete implementations into AppState.

Technology Stack

Backend: Rust, Axum, Tokio, Serde, MongoDB Rust driver, JWT, Argon2, tracing
Frontend: Angular 22 (standalone + signals), Angular Material 22, Tailwind CSS 4, pnpm
Data / AI: MongoDB Atlas (documents + Search + Vector Search), OpenAI embeddings, Gemini/OpenAI completions
Ops: AWS (S3, CloudFront, EC2, CDK), GitHub Actions, Playwright, Docker

Outcomes

  • Conversational discovery with source-cited, non-fabricated answers from one content store
  • Maintainable AI backend: ports make providers and persistence swappable without rewriting use cases
  • Full CMS + authoring + reindex loop for keeping the RAG corpus current
  • Automated AWS/CDK + GitHub Actions path for content-driven public rebuilds
  • Delivered across sequential milestones with Rust integration tests, Angular unit specs, and Playwright E2E smoke coverage

Updated Jul 17, 2026