<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jagannath Padhi</title>
    <description>The latest articles on DEV Community by Jagannath Padhi (@jagannath135).</description>
    <link>https://dev.to/jagannath135</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4176994%2Fcbd57f8a-62ed-4a41-985e-e91953eec9fd.png</url>
      <title>DEV Community: Jagannath Padhi</title>
      <link>https://dev.to/jagannath135</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jagannath135"/>
    <language>en</language>
    <item>
      <title>Afterlight: The Memory Keeper --- A Local-First AI Sanctuary for Stories &amp; Remembrance</title>
      <dc:creator>Jagannath Padhi</dc:creator>
      <pubDate>Sun, 01 Nov 2026 06:38:54 +0000</pubDate>
      <link>https://dev.to/jagannath135/afterlight-the-memory-keeper-a-local-first-ai-sanctuary-for-stories-remembrance-47ja</link>
      <guid>https://dev.to/jagannath135/afterlight-the-memory-keeper-a-local-first-ai-sanctuary-for-stories-remembrance-47ja</guid>
      <description>&lt;p&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge&lt;br&gt;
Week 4: Ghost in the&lt;br&gt;
Machine&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Afterlight: The Memory Keeper&lt;/strong&gt; is a privacy-first, local-first AI&lt;br&gt;
memory preservation platform created individually for Hacktoberfest Week&lt;br&gt;
4: &lt;strong&gt;Ghost in the Machine&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Afterlight helps people preserve and rediscover meaningful stories,&lt;br&gt;
photographs, voice recordings, family traditions, and personal memories.&lt;br&gt;
It brings together two interpretations of the challenge theme:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Ghost in the Machine:&lt;/strong&gt; Forgotten stories and recordings can feel
like voices trapped in old photographs, tapes, and folders.
Afterlight uses local AI to transcribe, organize, search, and
creatively reinterpret saved memories.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Día de los Muertos:&lt;/strong&gt; The Virtual Ofrenda offers a customizable
digital space to honor loved ones through photographs, remembrance
messages, favorite foods, songs, flowers, traditions, and associated
stories.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Afterlight is designed around a simple principle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Your memories belong to you. Your stories should not depend on a&lt;br&gt;
server you do not control.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  The Problem
&lt;/h3&gt;

&lt;p&gt;Family stories and personal histories are often scattered across paper&lt;br&gt;
notes, old photographs, audio recordings, phones, and disconnected&lt;br&gt;
folders. Finding a particular detail can be difficult, and valuable oral&lt;br&gt;
histories may remain inaccessible because they have never been&lt;br&gt;
transcribed or organized.&lt;/p&gt;

&lt;p&gt;At the same time, sending intimate memories, photographs, and voice&lt;br&gt;
recordings to third-party AI services can create privacy and&lt;br&gt;
data-ownership concerns. Hosted AI services can also introduce recurring&lt;br&gt;
usage costs and dependence on a provider's availability, pricing, and&lt;br&gt;
terms.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Solution
&lt;/h3&gt;

&lt;p&gt;Afterlight brings memory preservation and AI-assisted discovery into a&lt;br&gt;
local-first application:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Memory Vault:&lt;/strong&gt; Preserve stories, photographs, dates, people,
locations, tags, and personal experiences in an organized archive.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Voice of the Past:&lt;/strong&gt; Transcribe uploaded oral-history recordings
with locally running speech recognition, review the transcript, and
save it with related memories.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;AI Memory Companion:&lt;/strong&gt; Ask natural-language questions about saved
memories. Retrieval-augmented generation (RAG) finds relevant
records and presents the supporting sources.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Virtual Ofrenda:&lt;/strong&gt; Create a customizable Día de los
Muertos-inspired remembrance altar with portraits, candles,
marigold-inspired decorations, offerings, and tribute messages.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Ghost Echoes:&lt;/strong&gt; Create atmospheric fictional stories inspired by
selected memories, with a clear notice that generated stories are
creative fiction---not real communications from deceased people.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Memory Timeline:&lt;/strong&gt; Explore saved stories and events
chronologically.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Privacy &amp;amp; Model Control Center:&lt;/strong&gt; Inspect the local AI runtime,
available models, local data controls, export options, and setup
status.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application is designed to keep personal records and AI inference on&lt;br&gt;
the user's machine. Any offline claims in this submission should reflect&lt;br&gt;
the exact features verified with the network disconnected.&lt;/p&gt;


&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- Replace these placeholders with real links before publishing. --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/Jagannath357/Hacktoberfest-week4" rel="noopener noreferrer"&gt;https://github.com/Jagannath357/Hacktoberfest-week4&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Video Demonstration:&lt;/strong&gt; [Insert a Loom, YouTube, or other
walkthrough link]&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Live Demo:&lt;/strong&gt; Afterlight is designed for local execution. [Add a
hosted demo only if one is actually available.]&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;DevRelay Agent Session (Optional):&lt;/strong&gt; [Insert the real session
link if saved.]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Feature Walkthrough
&lt;/h3&gt;



&lt;p&gt;Feature                 What to demonstrate     AI / technical&lt;br&gt;
                                                  foundation&lt;/p&gt;



&lt;p&gt;Memory Vault            Create, edit, search,   Local database and file&lt;br&gt;
                          filter, and revisit     storage&lt;br&gt;
                          saved memories          &lt;/p&gt;

&lt;p&gt;Voice of the Past       Upload an audio file,   &lt;code&gt;faster-whisper&lt;/code&gt;&lt;br&gt;
                          transcribe it, review&lt;br&gt;&lt;br&gt;
                          the transcript, and&lt;br&gt;&lt;br&gt;
                          save it                 &lt;/p&gt;

&lt;p&gt;AI Memory Companion     Ask a question and      Ollama, an open-weight&lt;br&gt;
                          inspect the retrieved   model, embeddings, and&lt;br&gt;
                          source memories         ChromaDB&lt;/p&gt;

&lt;p&gt;Virtual Ofrenda         Create a remembrance    Local records and&lt;br&gt;
                          profile and customize   frontend presentation&lt;br&gt;
                          its altar               &lt;/p&gt;

&lt;p&gt;Ghost Echoes            Generate and save a     Local LLM and&lt;br&gt;
                          fictional story         controlled prompts&lt;br&gt;
                          inspired by selected&lt;br&gt;&lt;br&gt;
                          memories                &lt;/p&gt;

&lt;p&gt;Memory Timeline         Browse memories by year Local database queries&lt;br&gt;
                          and date                &lt;/p&gt;

&lt;p&gt;Privacy &amp;amp; Model Control Inspect runtime/model   Ollama and local&lt;br&gt;
  Center                  status, export data,    file/database storage&lt;br&gt;
                          and review&lt;br&gt;&lt;br&gt;
                          local-storage controls  &lt;/p&gt;


&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- Add screenshots captured from the actual running application. Suggested screenshots: --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt; Landing page and local-first privacy explanation.&lt;/li&gt;
&lt;li&gt; Dashboard populated with real saved records.&lt;/li&gt;
&lt;li&gt; Memory Vault showing a saved memory and its details.&lt;/li&gt;
&lt;li&gt; Voice of the Past showing an actual transcript.&lt;/li&gt;
&lt;li&gt; AI Memory Companion answer with supporting source-memory cards.&lt;/li&gt;
&lt;li&gt; Virtual Ofrenda with a user-created remembrance profile.&lt;/li&gt;
&lt;li&gt; Ghost Echoes showing a generated story and its fiction disclaimer.&lt;/li&gt;
&lt;li&gt; Privacy &amp;amp; Model Control Center showing actual local runtime/model
status.&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/Jagannath357/Hacktoberfest-week4" rel="noopener noreferrer"&gt;https://github.com/Jagannath357/Hacktoberfest-week4&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- Optional GitHub embed. Replace the URL before publishing. --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Jagannath357" rel="noopener noreferrer"&gt;
        Jagannath357
      &lt;/a&gt; / &lt;a href="https://github.com/Jagannath357/Hacktoberfest-week4" rel="noopener noreferrer"&gt;
        Hacktoberfest-week4
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;AFTERLIGHT — THE MEMORY KEEPER&lt;/h1&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;&lt;em&gt;"Some stories deserve to live beyond a lifetime."&lt;/em&gt;&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://hacktoberfest.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fb44f55c6f3e2ad8402b784613566771df193685b69d7d95865287524960bab6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f626572666573742d5765656b253230342532304368616c6c656e67652d6f72616e67652e737667" alt="Hacktoberfest 2026"&gt;&lt;/a&gt;
&lt;a href="https://hacktoberfest.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/468c83240848a64582f0b6fe6b94c36ad3f27168bac40ecdc0c0def3f3ce7f3e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5468656d652d47686f7374253230696e2532307468652532304d616368696e652d707572706c652e737667" alt="Theme: Ghost in the Machine"&gt;&lt;/a&gt;
&lt;a href="https://react.dev/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/220369cfe09ec5ea15566386297219861ac850a04d8092c5e98afc3ec194746c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46726f6e74656e642d52656163742532303138253230253242253230547970655363726970742d626c75652e737667" alt="React 18"&gt;&lt;/a&gt;
&lt;a href="https://fastapi.tiangolo.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9786ab9adedcb1a223b86df48f015573665a35a7654e07ef23cb4f0c02b23b22/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4261636b656e642d46617374415049253230253242253230507974686f6e2d3030393638382e737667" alt="FastAPI"&gt;&lt;/a&gt;
&lt;a href="https://ollama.ai/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/f287b8c1e9bc2704356d3c21c9371e7d355731f853d290017c683fc49fa5f1b7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f414925323052756e74696d652d4f6c6c616d61253230284c6f63616c253230496e666572656e6365292d626c61636b2e737667" alt="Ollama"&gt;&lt;/a&gt;
&lt;a href="https://www.trychroma.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/43b0f3496d759a6079ec08054b8b57e9295a9a6de69aafbe7b46eab59c410ea1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f566563746f7225323053746f72652d4368726f6d614442253230284f66666c696e65292d7265642e737667" alt="ChromaDB"&gt;&lt;/a&gt;
&lt;a href="https://github.com/Jagannath357/Hacktoberfest-week4/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📖 Executive Summary&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;AFTERLIGHT&lt;/strong&gt; is a privacy-first, locally powered AI memory preservation platform developed for the &lt;strong&gt;Hacktoberfest Week 4 Challenge — "Ghost in the Machine"&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It unifies two poignant themes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The Ghost in the Machine&lt;/strong&gt;: Awakening forgotten family memories, cassette recordings, and heirloom photographs through local open-source AI retrieval and atmospheric creative storytelling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Día de los Muertos (Day of the Dead)&lt;/strong&gt;: Honoring departed ancestors through an interactive, culturally reverent virtual altar (&lt;em&gt;ofrenda&lt;/em&gt;) adorned with flickering candlelight physics, golden cempasúchil petals, traditional offerings, and printable tribute keepsakes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Every AI capability in Afterlight—from speech-to-text audio transcription and dense semantic vector retrieval to conversational memory companion RAG—runs &lt;strong&gt;100% locally on your own machine&lt;/strong&gt; using open-weight models (&lt;code&gt;Qwen2.5 3B&lt;/code&gt;, &lt;code&gt;faster-whisper&lt;/code&gt;, &lt;code&gt;ChromaDB&lt;/code&gt;).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Core Philosophy&lt;/strong&gt;: &lt;em&gt;"Your memories belong to you. Your stories should&lt;/em&gt;…&lt;/p&gt;
&lt;/blockquote&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Jagannath357/Hacktoberfest-week4" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Project Structure
&lt;/h3&gt;

&lt;p&gt;The planned application structure separates the frontend, backend, AI&lt;br&gt;
services, and local user data. Adjust this tree to match the repository&lt;br&gt;
that is actually submitted.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;afterlight/
├── frontend/                  # React, TypeScript, Vite, Tailwind CSS
│   └── src/
│       ├── components/         # Memory, altar, audio, story, and layout UI
│       ├── pages/              # Dashboard, Vault, Ofrenda, Companion, etc.
│       ├── services/           # Backend API clients
│       ├── hooks/
│       ├── contexts/
│       └── types/
├── backend/                   # Python, FastAPI, SQLAlchemy
│   ├── app/
│   │   ├── api/                # REST endpoints
│   │   ├── core/               # Configuration and shared utilities
│   │   ├── database/            # SQLite setup
│   │   ├── models/              # Database models
│   │   ├── schemas/             # Request/response validation
│   │   └── services/
│   │       ├── ai/              # Ollama/model adapter
│   │       ├── embeddings/      # Local embeddings and retrieval
│   │       ├── memory/          # Memory operations
│   │       ├── transcription/   # faster-whisper integration
│   │       └── storytelling/    # Grounded creative generation
│   └── tests/
├── local_data/                 # User data; excluded from Git
│   ├── database/
│   ├── photographs/
│   ├── audio/
│   ├── embeddings/
│   └── exports/
├── docs/
├── scripts/
├── .env.example
├── .gitignore
├── README.md
└── LICENSE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;Afterlight uses a modular, local-first architecture. The frontend&lt;br&gt;
communicates with a local FastAPI backend. The backend manages&lt;br&gt;
persistent records, local files, retrieval, transcription, and requests&lt;br&gt;
to the local model runtime.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture Overview
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+--------------------------------------------------------------+
|                    Afterlight Frontend                       |
|             React + TypeScript + Vite + Tailwind              |
+------------------------------+-------------------------------+
                               |
                         Local REST API
                               |
+------------------------------v-------------------------------+
|                    Python FastAPI Backend                     |
|                                                              |
|  +----------------+  +----------------+  +----------------+  |
|  | Memory Service |  | Audio Service  |  | Story Service  |  |
|  +----------------+  +----------------+  +----------------+  |
|          |                   |                   |            |
|          v                   v                   v            |
|  +----------------+  +----------------+  +----------------+  |
|  | SQLite         |  | faster-whisper |  | Ollama Adapter |  |
|  | Local Records  |  | Local Speech   |  | Local LLM      |  |
|  +----------------+  +----------------+  +----------------+  |
|          |                                       |            |
|          v                                       v            |
|  +----------------+                    +----------------+    |
|  | ChromaDB       |&amp;lt;-------------------| Embedding Model|    |
|  | Vector Search  |                    | Local Embedding|    |
|  +----------------+                    +----------------+    |
+--------------------------------------------------------------+
                               |
                               v
+--------------------------------------------------------------+
|                  User-Controlled Local Data                   |
|         Database / Photographs / Audio / Exports               |
+--------------------------------------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  1. Frontend &amp;amp; Experience
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Framework:&lt;/strong&gt; React with TypeScript and Vite.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Styling:&lt;/strong&gt; Tailwind CSS with a dark, cinematic visual identity.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Visual direction:&lt;/strong&gt; Midnight backgrounds, warm amber and
candlelight accents, marigold-inspired details, framed photographs,
and restrained atmospheric animation.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Interface:&lt;/strong&gt; Responsive pages for the dashboard, Memory Vault,
Voice of the Past, AI Memory Companion, Virtual Ofrenda, Ghost
Echoes, Memory Timeline, and privacy controls.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Backend &amp;amp; Local Persistence
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Backend:&lt;/strong&gt; Python and FastAPI for local REST APIs.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Database:&lt;/strong&gt; SQLite for structured memory records, people,
photographs, recordings, transcripts, ofrendas, stories, and related
metadata.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;File storage:&lt;/strong&gt; Photographs and audio are stored as local files;
the database stores their metadata and local references rather than
Base64 copies.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Validation:&lt;/strong&gt; Pydantic schemas and file validation are used at API
boundaries.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Data ownership:&lt;/strong&gt; Local records can be backed up and exported by
the user.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Open-Weight AI &amp;amp; Local Inference
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Runtime:&lt;/strong&gt; Ollama provides a local interface for running
compatible open-weight language models.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Default model target:&lt;/strong&gt; &lt;code&gt;qwen2.5:3b&lt;/code&gt; (or another compatible model
selected in the application).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Model flexibility:&lt;/strong&gt; The AI service is separated behind a model
adapter so compatible local models can be changed without rewriting
feature logic.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;AI tasks:&lt;/strong&gt; Memory summaries, contextual question answering,
categorization, remembrance-writing assistance, and fictional story
generation.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;No mandatory hosted LLM:&lt;/strong&gt; The core AI design does not require
OpenAI, Gemini, Claude, or another hosted LLM API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Model availability, model licenses, and actual tested model names should&lt;br&gt;
be confirmed against the implementation before publishing.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Local Speech Recognition
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Engine:&lt;/strong&gt; &lt;code&gt;faster-whisper&lt;/code&gt;, using a locally available Whisper
model.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Workflow:&lt;/strong&gt; Upload audio → transcribe locally → review/edit
transcript → save transcript and associate it with a memory.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Formats:&lt;/strong&gt; Support depends on the installed FFmpeg configuration
and the formats enabled by the application.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Privacy:&lt;/strong&gt; Audio is processed locally when the local transcription
pipeline and model are installed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Semantic Search &amp;amp; Grounded Memory Companion
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Embeddings:&lt;/strong&gt; A locally installed &lt;code&gt;sentence-transformers&lt;/code&gt; model,
such as &lt;code&gt;all-MiniLM-L6-v2&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Vector store:&lt;/strong&gt; ChromaDB for semantic retrieval.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Retrieval flow:&lt;/strong&gt; Embed the question → retrieve relevant memory
chunks → load their source records → provide context to the local
LLM → return an answer with source references.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Grounding:&lt;/strong&gt; The assistant should state when saved memories do not
contain enough information. It should not present unsupported
model-generated details as facts.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Source visibility:&lt;/strong&gt; Responses should link to the memory records
used as context, allowing users to inspect the original material.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. Creative Storytelling &amp;amp; Remembrance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Ghost Echoes:&lt;/strong&gt; Generates original atmospheric fiction inspired by
user-selected memories.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Virtual Ofrenda:&lt;/strong&gt; Provides a customizable digital remembrance
space for portraits, stories, offerings, and messages.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Ethical boundary:&lt;/strong&gt; Generated stories are clearly labeled as
fiction. The application does not claim to contact, recreate, or
speak for deceased people.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Cultural respect:&lt;/strong&gt; Ofrenda elements are customizable; the
experience does not assume that every user follows the same
traditions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7. Testing &amp;amp; Verification
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- Replace this section with actual commands, results, and test counts from your final run. --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Backend tests:&lt;/strong&gt; [Add test command and actual result.]&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Frontend checks:&lt;/strong&gt; [Add lint/type-check/build commands and actual
result.]&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;AI integration:&lt;/strong&gt; [State which local model and AI workflows were
tested.]&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Offline verification:&lt;/strong&gt; [List only the workflows personally
tested with the network disconnected.]&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Known limitations:&lt;/strong&gt; [Document hardware, model, performance, or
platform limitations.]&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;For Afterlight, open innovation is directly connected to privacy,&lt;br&gt;
ownership, accessibility, and long-term control.&lt;/p&gt;

&lt;p&gt;Memories can include intimate family stories, personal photographs, and&lt;br&gt;
recordings of people who trusted us with their words. A&lt;br&gt;
memory-preservation tool should not require those materials to be sent&lt;br&gt;
to a third-party AI provider.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Privacy &amp;amp; Data Sovereignty
&lt;/h3&gt;

&lt;p&gt;Local inference allows supported AI operations to run on the user's own&lt;br&gt;
machine. Afterlight is designed to keep its memory archive, photographs,&lt;br&gt;
recordings, and local database under the user's control rather than&lt;br&gt;
making a hosted AI service the default destination for personal&lt;br&gt;
material.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Model Choice &amp;amp; Freedom to Experiment
&lt;/h3&gt;

&lt;p&gt;A local model adapter makes it possible to test and switch between&lt;br&gt;
compatible models. Developers can compare model quality, hardware&lt;br&gt;
requirements, languages, and response behavior without redesigning the&lt;br&gt;
entire application around one provider.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Offline Access &amp;amp; Independence
&lt;/h3&gt;

&lt;p&gt;Once the application dependencies, model weights, and required assets&lt;br&gt;
have been downloaded, supported local workflows can operate without an&lt;br&gt;
internet connection. This reduces dependence on a hosted service being&lt;br&gt;
available whenever someone wants to revisit a memory.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Accessibility Without Per-Request AI Fees
&lt;/h3&gt;

&lt;p&gt;Local inference avoids mandatory per-request hosted LLM charges. It does&lt;br&gt;
not mean the application has no costs: users still need suitable&lt;br&gt;
hardware, storage, electricity, and initial downloads. However, it gives&lt;br&gt;
people another way to use AI without a recurring API bill.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Community Adaptation &amp;amp; Longevity
&lt;/h3&gt;

&lt;p&gt;An open implementation can be inspected, modified, extended, and adapted&lt;br&gt;
by contributors. Communities can experiment with language support,&lt;br&gt;
oral-history workflows, accessibility improvements, and culturally&lt;br&gt;
appropriate remembrance experiences.&lt;/p&gt;

&lt;h3&gt;
  
  
  Honest Technical Trade-offs
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Hardware:&lt;/strong&gt; Local inference performance depends on RAM, CPU/GPU,
quantization, and model size.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Storage:&lt;/strong&gt; Model weights, audio recordings, photographs, and
vector indexes require disk space.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Initial setup:&lt;/strong&gt; Ollama, Python packages, frontend dependencies,
and model assets generally need to be installed or downloaded before
offline use.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Performance:&lt;/strong&gt; CPU-only transcription and LLM inference may take
longer than hosted GPU services.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Model licensing:&lt;/strong&gt; Each model has its own license and usage
conditions. Check and document the exact license of every model
distributed or recommended.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Offline scope:&lt;/strong&gt; Do not describe the entire application as offline
unless every claimed workflow has been tested without network
access.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What Worked Better With an Open-Based Approach?
&lt;/h3&gt;

&lt;p&gt;The local-first architecture makes privacy and model choice design&lt;br&gt;
properties rather than optional settings in a hosted service. It also&lt;br&gt;
allows the project to keep working with locally installed models without&lt;br&gt;
requiring a particular commercial AI provider's API.&lt;/p&gt;




&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;This project was developed individually with assistance from Google&lt;br&gt;
Antigravity as an agentic coding environment.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Developer:&lt;/strong&gt; Individual project submission.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;AI coding tool:&lt;/strong&gt; Google Antigravity.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Development work:&lt;/strong&gt; [Describe the architecture, implementation,
debugging, and testing work actually completed.]&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;DevRelay Session (Optional):&lt;/strong&gt; [Insert a real DevRelay session
link if one was saved.]
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- Do not claim a DevRelay session was recorded unless you have a real shareable link. --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Individual Submission Note
&lt;/h2&gt;

&lt;p&gt;Afterlight is submitted as an individual project for the Hacktoberfest&lt;br&gt;
Open-Source AI Challenge Week 4: Ghost in the Machine.&lt;/p&gt;

&lt;p&gt;I independently conceived and developed the project, including its&lt;br&gt;
application design, implementation, integration, and documentation, with&lt;br&gt;
AI coding assistance where applicable. Any external libraries, models,&lt;br&gt;
frameworks, and third-party assets are credited through their respective&lt;br&gt;
licenses and attributions.&lt;/p&gt;




&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- Only list categories that are officially available and that you are eligible to enter. Do not assume a category or prize exists. --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Challenge:&lt;/strong&gt; Hacktoberfest Week 4 --- Ghost in the Machine.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Submission Type:&lt;/strong&gt; Individual.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Partner / Special Categories:&lt;/strong&gt; [Add only verified eligible
categories, if applicable.]&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;Afterlight explores a different kind of ghost in the machine: not a&lt;br&gt;
supernatural presence, but the stories and voices that risk being&lt;br&gt;
forgotten in old recordings, photographs, and disconnected archives.&lt;/p&gt;

&lt;p&gt;By combining local open-weight AI with&lt;br&gt;
memory preservation, oral-history&lt;br&gt;
transcription, grounded search, creative&lt;br&gt;
storytelling, and a digital&lt;br&gt;
remembrance altar, Afterlight aims to make&lt;br&gt;
technology a respectful&lt;br&gt;
bridge between generations.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The machine may be artificial. The memories&lt;br&gt;
are real.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Built individually with care, cultural respect,&lt;br&gt;
and open-source AI for&lt;br&gt;
Hacktoberfest 2026. 🎃🕯️🌼&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>devchallenge</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>Afterlight: The Memory Keeper --- A Local-First AI Sanctuary for Stories &amp; Remembrance</title>
      <dc:creator>Jagannath Padhi</dc:creator>
      <pubDate>Sat, 31 Oct 2026 15:02:21 +0000</pubDate>
      <link>https://dev.to/jagannath135/afterlight-the-memory-keeper-a-local-first-ai-sanctuary-for-stories-remembrance-5co5</link>
      <guid>https://dev.to/jagannath135/afterlight-the-memory-keeper-a-local-first-ai-sanctuary-for-stories-remembrance-5co5</guid>
      <description>&lt;p&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge&lt;br&gt;
Week 4: Ghost in the&lt;br&gt;
Machine&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Afterlight: The Memory Keeper&lt;/strong&gt; is a privacy-first, local-first AI&lt;br&gt;
memory preservation platform created individually for Hacktoberfest Week&lt;br&gt;
4: &lt;strong&gt;Ghost in the Machine&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Afterlight helps people preserve and rediscover meaningful stories,&lt;br&gt;
photographs, voice recordings, family traditions, and personal memories.&lt;br&gt;
It brings together two interpretations of the challenge theme:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Ghost in the Machine:&lt;/strong&gt; Forgotten stories and recordings can feel
like voices trapped in old photographs, tapes, and folders.
Afterlight uses local AI to transcribe, organize, search, and
creatively reinterpret saved memories.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Día de los Muertos:&lt;/strong&gt; The Virtual Ofrenda offers a customizable
digital space to honor loved ones through photographs, remembrance
messages, favorite foods, songs, flowers, traditions, and associated
stories.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Afterlight is designed around a simple principle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Your memories belong to you. Your stories should not depend on a&lt;br&gt;
server you do not control.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  The Problem
&lt;/h3&gt;

&lt;p&gt;Family stories and personal histories are often scattered across paper&lt;br&gt;
notes, old photographs, audio recordings, phones, and disconnected&lt;br&gt;
folders. Finding a particular detail can be difficult, and valuable oral&lt;br&gt;
histories may remain inaccessible because they have never been&lt;br&gt;
transcribed or organized.&lt;/p&gt;

&lt;p&gt;At the same time, sending intimate memories, photographs, and voice&lt;br&gt;
recordings to third-party AI services can create privacy and&lt;br&gt;
data-ownership concerns. Hosted AI services can also introduce recurring&lt;br&gt;
usage costs and dependence on a provider's availability, pricing, and&lt;br&gt;
terms.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Solution
&lt;/h3&gt;

&lt;p&gt;Afterlight brings memory preservation and AI-assisted discovery into a&lt;br&gt;
local-first application:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Memory Vault:&lt;/strong&gt; Preserve stories, photographs, dates, people,
locations, tags, and personal experiences in an organized archive.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Voice of the Past:&lt;/strong&gt; Transcribe uploaded oral-history recordings
with locally running speech recognition, review the transcript, and
save it with related memories.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;AI Memory Companion:&lt;/strong&gt; Ask natural-language questions about saved
memories. Retrieval-augmented generation (RAG) finds relevant
records and presents the supporting sources.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Virtual Ofrenda:&lt;/strong&gt; Create a customizable Día de los
Muertos-inspired remembrance altar with portraits, candles,
marigold-inspired decorations, offerings, and tribute messages.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Ghost Echoes:&lt;/strong&gt; Create atmospheric fictional stories inspired by
selected memories, with a clear notice that generated stories are
creative fiction---not real communications from deceased people.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Memory Timeline:&lt;/strong&gt; Explore saved stories and events
chronologically.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Privacy &amp;amp; Model Control Center:&lt;/strong&gt; Inspect the local AI runtime,
available models, local data controls, export options, and setup
status.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application is designed to keep personal records and AI inference on&lt;br&gt;
the user's machine. Any offline claims in this submission should reflect&lt;br&gt;
the exact features verified with the network disconnected.&lt;/p&gt;


&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- Replace these placeholders with real links before publishing. --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/Jagannath357/Hacktoberfest-week4" rel="noopener noreferrer"&gt;https://github.com/Jagannath357/Hacktoberfest-week4&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Video Demonstration:&lt;/strong&gt; [Insert a Loom, YouTube, or other
walkthrough link]&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Live Demo:&lt;/strong&gt; Afterlight is designed for local execution. [Add a
hosted demo only if one is actually available.]&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;DevRelay Agent Session (Optional):&lt;/strong&gt; [Insert the real session
link if saved.]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Feature Walkthrough
&lt;/h3&gt;



&lt;p&gt;Feature                 What to demonstrate     AI / technical&lt;br&gt;
                                                  foundation&lt;/p&gt;



&lt;p&gt;Memory Vault            Create, edit, search,   Local database and file&lt;br&gt;
                          filter, and revisit     storage&lt;br&gt;
                          saved memories          &lt;/p&gt;

&lt;p&gt;Voice of the Past       Upload an audio file,   &lt;code&gt;faster-whisper&lt;/code&gt;&lt;br&gt;
                          transcribe it, review&lt;br&gt;&lt;br&gt;
                          the transcript, and&lt;br&gt;&lt;br&gt;
                          save it                 &lt;/p&gt;

&lt;p&gt;AI Memory Companion     Ask a question and      Ollama, an open-weight&lt;br&gt;
                          inspect the retrieved   model, embeddings, and&lt;br&gt;
                          source memories         ChromaDB&lt;/p&gt;

&lt;p&gt;Virtual Ofrenda         Create a remembrance    Local records and&lt;br&gt;
                          profile and customize   frontend presentation&lt;br&gt;
                          its altar               &lt;/p&gt;

&lt;p&gt;Ghost Echoes            Generate and save a     Local LLM and&lt;br&gt;
                          fictional story         controlled prompts&lt;br&gt;
                          inspired by selected&lt;br&gt;&lt;br&gt;
                          memories                &lt;/p&gt;

&lt;p&gt;Memory Timeline         Browse memories by year Local database queries&lt;br&gt;
                          and date                &lt;/p&gt;

&lt;p&gt;Privacy &amp;amp; Model Control Inspect runtime/model   Ollama and local&lt;br&gt;
  Center                  status, export data,    file/database storage&lt;br&gt;
                          and review&lt;br&gt;&lt;br&gt;
                          local-storage controls  &lt;/p&gt;


&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- Add screenshots captured from the actual running application. Suggested screenshots: --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt; Landing page and local-first privacy explanation.&lt;/li&gt;
&lt;li&gt; Dashboard populated with real saved records.&lt;/li&gt;
&lt;li&gt; Memory Vault showing a saved memory and its details.&lt;/li&gt;
&lt;li&gt; Voice of the Past showing an actual transcript.&lt;/li&gt;
&lt;li&gt; AI Memory Companion answer with supporting source-memory cards.&lt;/li&gt;
&lt;li&gt; Virtual Ofrenda with a user-created remembrance profile.&lt;/li&gt;
&lt;li&gt; Ghost Echoes showing a generated story and its fiction disclaimer.&lt;/li&gt;
&lt;li&gt; Privacy &amp;amp; Model Control Center showing actual local runtime/model
status.&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/Jagannath357/Hacktoberfest-week4" rel="noopener noreferrer"&gt;https://github.com/Jagannath357/Hacktoberfest-week4&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- Optional GitHub embed. Replace the URL before publishing. --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Jagannath357" rel="noopener noreferrer"&gt;
        Jagannath357
      &lt;/a&gt; / &lt;a href="https://github.com/Jagannath357/Hacktoberfest-week4" rel="noopener noreferrer"&gt;
        Hacktoberfest-week4
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;AFTERLIGHT — THE MEMORY KEEPER&lt;/h1&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;&lt;em&gt;"Some stories deserve to live beyond a lifetime."&lt;/em&gt;&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://hacktoberfest.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fb44f55c6f3e2ad8402b784613566771df193685b69d7d95865287524960bab6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f626572666573742d5765656b253230342532304368616c6c656e67652d6f72616e67652e737667" alt="Hacktoberfest 2026"&gt;&lt;/a&gt;
&lt;a href="https://hacktoberfest.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/468c83240848a64582f0b6fe6b94c36ad3f27168bac40ecdc0c0def3f3ce7f3e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5468656d652d47686f7374253230696e2532307468652532304d616368696e652d707572706c652e737667" alt="Theme: Ghost in the Machine"&gt;&lt;/a&gt;
&lt;a href="https://react.dev/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/220369cfe09ec5ea15566386297219861ac850a04d8092c5e98afc3ec194746c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46726f6e74656e642d52656163742532303138253230253242253230547970655363726970742d626c75652e737667" alt="React 18"&gt;&lt;/a&gt;
&lt;a href="https://fastapi.tiangolo.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9786ab9adedcb1a223b86df48f015573665a35a7654e07ef23cb4f0c02b23b22/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4261636b656e642d46617374415049253230253242253230507974686f6e2d3030393638382e737667" alt="FastAPI"&gt;&lt;/a&gt;
&lt;a href="https://ollama.ai/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/f287b8c1e9bc2704356d3c21c9371e7d355731f853d290017c683fc49fa5f1b7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f414925323052756e74696d652d4f6c6c616d61253230284c6f63616c253230496e666572656e6365292d626c61636b2e737667" alt="Ollama"&gt;&lt;/a&gt;
&lt;a href="https://www.trychroma.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/43b0f3496d759a6079ec08054b8b57e9295a9a6de69aafbe7b46eab59c410ea1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f566563746f7225323053746f72652d4368726f6d614442253230284f66666c696e65292d7265642e737667" alt="ChromaDB"&gt;&lt;/a&gt;
&lt;a href="https://github.com/Jagannath357/Hacktoberfest-week4/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📖 Executive Summary&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;AFTERLIGHT&lt;/strong&gt; is a privacy-first, locally powered AI memory preservation platform developed for the &lt;strong&gt;Hacktoberfest Week 4 Challenge — "Ghost in the Machine"&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It unifies two poignant themes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The Ghost in the Machine&lt;/strong&gt;: Awakening forgotten family memories, cassette recordings, and heirloom photographs through local open-source AI retrieval and atmospheric creative storytelling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Día de los Muertos (Day of the Dead)&lt;/strong&gt;: Honoring departed ancestors through an interactive, culturally reverent virtual altar (&lt;em&gt;ofrenda&lt;/em&gt;) adorned with flickering candlelight physics, golden cempasúchil petals, traditional offerings, and printable tribute keepsakes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Every AI capability in Afterlight—from speech-to-text audio transcription and dense semantic vector retrieval to conversational memory companion RAG—runs &lt;strong&gt;100% locally on your own machine&lt;/strong&gt; using open-weight models (&lt;code&gt;Qwen2.5 3B&lt;/code&gt;, &lt;code&gt;faster-whisper&lt;/code&gt;, &lt;code&gt;ChromaDB&lt;/code&gt;).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Core Philosophy&lt;/strong&gt;: &lt;em&gt;"Your memories belong to you. Your stories should&lt;/em&gt;…&lt;/p&gt;
&lt;/blockquote&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Jagannath357/Hacktoberfest-week4" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Project Structure
&lt;/h3&gt;

&lt;p&gt;The planned application structure separates the frontend, backend, AI&lt;br&gt;
services, and local user data. Adjust this tree to match the repository&lt;br&gt;
that is actually submitted.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;afterlight/
├── frontend/                  # React, TypeScript, Vite, Tailwind CSS
│   └── src/
│       ├── components/         # Memory, altar, audio, story, and layout UI
│       ├── pages/              # Dashboard, Vault, Ofrenda, Companion, etc.
│       ├── services/           # Backend API clients
│       ├── hooks/
│       ├── contexts/
│       └── types/
├── backend/                   # Python, FastAPI, SQLAlchemy
│   ├── app/
│   │   ├── api/                # REST endpoints
│   │   ├── core/               # Configuration and shared utilities
│   │   ├── database/            # SQLite setup
│   │   ├── models/              # Database models
│   │   ├── schemas/             # Request/response validation
│   │   └── services/
│   │       ├── ai/              # Ollama/model adapter
│   │       ├── embeddings/      # Local embeddings and retrieval
│   │       ├── memory/          # Memory operations
│   │       ├── transcription/   # faster-whisper integration
│   │       └── storytelling/    # Grounded creative generation
│   └── tests/
├── local_data/                 # User data; excluded from Git
│   ├── database/
│   ├── photographs/
│   ├── audio/
│   ├── embeddings/
│   └── exports/
├── docs/
├── scripts/
├── .env.example
├── .gitignore
├── README.md
└── LICENSE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;Afterlight uses a modular, local-first architecture. The frontend&lt;br&gt;
communicates with a local FastAPI backend. The backend manages&lt;br&gt;
persistent records, local files, retrieval, transcription, and requests&lt;br&gt;
to the local model runtime.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture Overview
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+--------------------------------------------------------------+
|                    Afterlight Frontend                       |
|             React + TypeScript + Vite + Tailwind              |
+------------------------------+-------------------------------+
                               |
                         Local REST API
                               |
+------------------------------v-------------------------------+
|                    Python FastAPI Backend                     |
|                                                              |
|  +----------------+  +----------------+  +----------------+  |
|  | Memory Service |  | Audio Service  |  | Story Service  |  |
|  +----------------+  +----------------+  +----------------+  |
|          |                   |                   |            |
|          v                   v                   v            |
|  +----------------+  +----------------+  +----------------+  |
|  | SQLite         |  | faster-whisper |  | Ollama Adapter |  |
|  | Local Records  |  | Local Speech   |  | Local LLM      |  |
|  +----------------+  +----------------+  +----------------+  |
|          |                                       |            |
|          v                                       v            |
|  +----------------+                    +----------------+    |
|  | ChromaDB       |&amp;lt;-------------------| Embedding Model|    |
|  | Vector Search  |                    | Local Embedding|    |
|  +----------------+                    +----------------+    |
+--------------------------------------------------------------+
                               |
                               v
+--------------------------------------------------------------+
|                  User-Controlled Local Data                   |
|         Database / Photographs / Audio / Exports               |
+--------------------------------------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  1. Frontend &amp;amp; Experience
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Framework:&lt;/strong&gt; React with TypeScript and Vite.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Styling:&lt;/strong&gt; Tailwind CSS with a dark, cinematic visual identity.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Visual direction:&lt;/strong&gt; Midnight backgrounds, warm amber and
candlelight accents, marigold-inspired details, framed photographs,
and restrained atmospheric animation.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Interface:&lt;/strong&gt; Responsive pages for the dashboard, Memory Vault,
Voice of the Past, AI Memory Companion, Virtual Ofrenda, Ghost
Echoes, Memory Timeline, and privacy controls.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Backend &amp;amp; Local Persistence
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Backend:&lt;/strong&gt; Python and FastAPI for local REST APIs.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Database:&lt;/strong&gt; SQLite for structured memory records, people,
photographs, recordings, transcripts, ofrendas, stories, and related
metadata.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;File storage:&lt;/strong&gt; Photographs and audio are stored as local files;
the database stores their metadata and local references rather than
Base64 copies.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Validation:&lt;/strong&gt; Pydantic schemas and file validation are used at API
boundaries.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Data ownership:&lt;/strong&gt; Local records can be backed up and exported by
the user.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Open-Weight AI &amp;amp; Local Inference
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Runtime:&lt;/strong&gt; Ollama provides a local interface for running
compatible open-weight language models.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Default model target:&lt;/strong&gt; &lt;code&gt;qwen2.5:3b&lt;/code&gt; (or another compatible model
selected in the application).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Model flexibility:&lt;/strong&gt; The AI service is separated behind a model
adapter so compatible local models can be changed without rewriting
feature logic.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;AI tasks:&lt;/strong&gt; Memory summaries, contextual question answering,
categorization, remembrance-writing assistance, and fictional story
generation.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;No mandatory hosted LLM:&lt;/strong&gt; The core AI design does not require
OpenAI, Gemini, Claude, or another hosted LLM API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Model availability, model licenses, and actual tested model names should&lt;br&gt;
be confirmed against the implementation before publishing.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Local Speech Recognition
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Engine:&lt;/strong&gt; &lt;code&gt;faster-whisper&lt;/code&gt;, using a locally available Whisper
model.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Workflow:&lt;/strong&gt; Upload audio → transcribe locally → review/edit
transcript → save transcript and associate it with a memory.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Formats:&lt;/strong&gt; Support depends on the installed FFmpeg configuration
and the formats enabled by the application.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Privacy:&lt;/strong&gt; Audio is processed locally when the local transcription
pipeline and model are installed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Semantic Search &amp;amp; Grounded Memory Companion
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Embeddings:&lt;/strong&gt; A locally installed &lt;code&gt;sentence-transformers&lt;/code&gt; model,
such as &lt;code&gt;all-MiniLM-L6-v2&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Vector store:&lt;/strong&gt; ChromaDB for semantic retrieval.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Retrieval flow:&lt;/strong&gt; Embed the question → retrieve relevant memory
chunks → load their source records → provide context to the local
LLM → return an answer with source references.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Grounding:&lt;/strong&gt; The assistant should state when saved memories do not
contain enough information. It should not present unsupported
model-generated details as facts.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Source visibility:&lt;/strong&gt; Responses should link to the memory records
used as context, allowing users to inspect the original material.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. Creative Storytelling &amp;amp; Remembrance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Ghost Echoes:&lt;/strong&gt; Generates original atmospheric fiction inspired by
user-selected memories.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Virtual Ofrenda:&lt;/strong&gt; Provides a customizable digital remembrance
space for portraits, stories, offerings, and messages.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Ethical boundary:&lt;/strong&gt; Generated stories are clearly labeled as
fiction. The application does not claim to contact, recreate, or
speak for deceased people.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Cultural respect:&lt;/strong&gt; Ofrenda elements are customizable; the
experience does not assume that every user follows the same
traditions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7. Testing &amp;amp; Verification
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- Replace this section with actual commands, results, and test counts from your final run. --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Backend tests:&lt;/strong&gt; [Add test command and actual result.]&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Frontend checks:&lt;/strong&gt; [Add lint/type-check/build commands and actual
result.]&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;AI integration:&lt;/strong&gt; [State which local model and AI workflows were
tested.]&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Offline verification:&lt;/strong&gt; [List only the workflows personally
tested with the network disconnected.]&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Known limitations:&lt;/strong&gt; [Document hardware, model, performance, or
platform limitations.]&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;For Afterlight, open innovation is directly connected to privacy,&lt;br&gt;
ownership, accessibility, and long-term control.&lt;/p&gt;

&lt;p&gt;Memories can include intimate family stories, personal photographs, and&lt;br&gt;
recordings of people who trusted us with their words. A&lt;br&gt;
memory-preservation tool should not require those materials to be sent&lt;br&gt;
to a third-party AI provider.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Privacy &amp;amp; Data Sovereignty
&lt;/h3&gt;

&lt;p&gt;Local inference allows supported AI operations to run on the user's own&lt;br&gt;
machine. Afterlight is designed to keep its memory archive, photographs,&lt;br&gt;
recordings, and local database under the user's control rather than&lt;br&gt;
making a hosted AI service the default destination for personal&lt;br&gt;
material.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Model Choice &amp;amp; Freedom to Experiment
&lt;/h3&gt;

&lt;p&gt;A local model adapter makes it possible to test and switch between&lt;br&gt;
compatible models. Developers can compare model quality, hardware&lt;br&gt;
requirements, languages, and response behavior without redesigning the&lt;br&gt;
entire application around one provider.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Offline Access &amp;amp; Independence
&lt;/h3&gt;

&lt;p&gt;Once the application dependencies, model weights, and required assets&lt;br&gt;
have been downloaded, supported local workflows can operate without an&lt;br&gt;
internet connection. This reduces dependence on a hosted service being&lt;br&gt;
available whenever someone wants to revisit a memory.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Accessibility Without Per-Request AI Fees
&lt;/h3&gt;

&lt;p&gt;Local inference avoids mandatory per-request hosted LLM charges. It does&lt;br&gt;
not mean the application has no costs: users still need suitable&lt;br&gt;
hardware, storage, electricity, and initial downloads. However, it gives&lt;br&gt;
people another way to use AI without a recurring API bill.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Community Adaptation &amp;amp; Longevity
&lt;/h3&gt;

&lt;p&gt;An open implementation can be inspected, modified, extended, and adapted&lt;br&gt;
by contributors. Communities can experiment with language support,&lt;br&gt;
oral-history workflows, accessibility improvements, and culturally&lt;br&gt;
appropriate remembrance experiences.&lt;/p&gt;

&lt;h3&gt;
  
  
  Honest Technical Trade-offs
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Hardware:&lt;/strong&gt; Local inference performance depends on RAM, CPU/GPU,
quantization, and model size.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Storage:&lt;/strong&gt; Model weights, audio recordings, photographs, and
vector indexes require disk space.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Initial setup:&lt;/strong&gt; Ollama, Python packages, frontend dependencies,
and model assets generally need to be installed or downloaded before
offline use.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Performance:&lt;/strong&gt; CPU-only transcription and LLM inference may take
longer than hosted GPU services.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Model licensing:&lt;/strong&gt; Each model has its own license and usage
conditions. Check and document the exact license of every model
distributed or recommended.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Offline scope:&lt;/strong&gt; Do not describe the entire application as offline
unless every claimed workflow has been tested without network
access.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What Worked Better With an Open-Based Approach?
&lt;/h3&gt;

&lt;p&gt;The local-first architecture makes privacy and model choice design&lt;br&gt;
properties rather than optional settings in a hosted service. It also&lt;br&gt;
allows the project to keep working with locally installed models without&lt;br&gt;
requiring a particular commercial AI provider's API.&lt;/p&gt;




&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;This project was developed individually with assistance from Google&lt;br&gt;
Antigravity as an agentic coding environment.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Developer:&lt;/strong&gt; Individual project submission.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;AI coding tool:&lt;/strong&gt; Google Antigravity.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Development work:&lt;/strong&gt; [Describe the architecture, implementation,
debugging, and testing work actually completed.]&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;DevRelay Session (Optional):&lt;/strong&gt; [Insert a real DevRelay session
link if one was saved.]
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- Do not claim a DevRelay session was recorded unless you have a real shareable link. --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Individual Submission Note
&lt;/h2&gt;

&lt;p&gt;Afterlight is submitted as an individual project for the Hacktoberfest&lt;br&gt;
Open-Source AI Challenge Week 4: Ghost in the Machine.&lt;/p&gt;

&lt;p&gt;I independently conceived and developed the project, including its&lt;br&gt;
application design, implementation, integration, and documentation, with&lt;br&gt;
AI coding assistance where applicable. Any external libraries, models,&lt;br&gt;
frameworks, and third-party assets are credited through their respective&lt;br&gt;
licenses and attributions.&lt;/p&gt;




&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- Only list categories that are officially available and that you are eligible to enter. Do not assume a category or prize exists. --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Challenge:&lt;/strong&gt; Hacktoberfest Week 4 --- Ghost in the Machine.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Submission Type:&lt;/strong&gt; Individual.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Partner / Special Categories:&lt;/strong&gt; [Add only verified eligible
categories, if applicable.]&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;Afterlight explores a different kind of ghost in the machine: not a&lt;br&gt;
supernatural presence, but the stories and voices that risk being&lt;br&gt;
forgotten in old recordings, photographs, and disconnected archives.&lt;/p&gt;

&lt;p&gt;By combining local open-weight AI with memory preservation, oral-history&lt;br&gt;
transcription, grounded search, creative storytelling, and a digital&lt;br&gt;
remembrance altar, Afterlight aims to make technology a respectful&lt;br&gt;
bridge between generations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The machine may be artificial. The memories are real.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Built individually with care, cultural respect, and open-source AI for&lt;br&gt;
Hacktoberfest 2026. 🎃 🕯️ 🌼&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>devchallenge</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>SoloBooks AI — Your business finances. Organized privately.</title>
      <dc:creator>Jagannath Padhi</dc:creator>
      <pubDate>Sun, 18 Oct 2026 16:11:07 +0000</pubDate>
      <link>https://dev.to/jagannath135/solobooks-ai-your-business-finances-organized-privately-50id</link>
      <guid>https://dev.to/jagannath135/solobooks-ai-your-business-finances-organized-privately-50id</guid>
      <description>&lt;p&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;SoloBooks AI&lt;/strong&gt; is a privacy-first, local-first financial document assistant designed specifically for freelancers, independent software developers, creative studios, tutors, and small business owners.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem
&lt;/h3&gt;

&lt;p&gt;Solo operators are routinely bombarded with receipts, software subscription invoices, contractor timesheets, client billing PDFs, and dining slips in fragmented formats. Traditional accounting platforms pose two major drawbacks for independent professionals:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Privacy &amp;amp; Data Security Risks:&lt;/strong&gt; Commercial tools mandate uploading private bank invoices, tax IDs, and confidential client rates to third-party cloud servers and proprietary AI APIs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Excessive Subscription Overhead:&lt;/strong&gt; Monolithic accounting suites cost between $30 and $60 per month for complex enterprise features that solo entrepreneurs rarely need.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Solution
&lt;/h3&gt;

&lt;p&gt;SoloBooks AI replaces manual spreadsheet entry with local open-weight intelligence while guaranteeing that financial documents remain quarantined on the user's personal hardware:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local Document Ingestion:&lt;/strong&gt; Processes PDF invoices, PNG receipts, and JPEG photos through on-device text parsing and local Tesseract.js WebAssembly OCR.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Open-Weight Extraction:&lt;/strong&gt; Integrates with local Ollama to extract candidate financial fields (merchant, date, subtotal, tax, total amount, category, and payment status).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human-in-the-Loop Verification:&lt;/strong&gt; AI extractions are strictly treated as draft proposals. Users review, edit, and confirm values before committing them to SQLite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic Math:&lt;/strong&gt; Financial amounts are stored in integer minor units (paise/cents) to eliminate floating-point drift and prevent hallucinated numbers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grounded AI Financial Assistant:&lt;/strong&gt; Answers natural-language questions (e.g., &lt;em&gt;"How much did I spend on software this month?"&lt;/em&gt;) by executing deterministic SQL queries and presenting verified supporting transaction cards alongside narrative summaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Sovereignty &amp;amp; Direct Exports:&lt;/strong&gt; Records and files stay in local &lt;code&gt;./data/&lt;/code&gt; directories, with one-click RFC 4180 CSV and structured JSON exports.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Video Demonstration:&lt;/strong&gt; &amp;lt;!-- [Insert link to video demo or loom/youtube walkthrough here] --&amp;gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo (Optional):&lt;/strong&gt; &amp;lt;!-- [Insert live demo URL if hosted, or specify: "Designed for local execution on localhost:3000"] --&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Verified Local Walkthrough Screenshots
&lt;/h3&gt;




&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &amp;lt;!-- [Insert your public GitHub repository link here, e.g., &lt;a href="https://github.com/your-username/solobooks-ai" rel="noopener noreferrer"&gt;https://github.com/your-username/solobooks-ai&lt;/a&gt;] --&amp;gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;SoloBooks AI is released under the permissive &lt;a href="https://opensource.org/licenses/MIT" rel="noopener noreferrer"&gt;MIT License&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;SoloBooks AI is built on a modern, decoupled architecture prioritizing local persistence, deterministic calculations, and modular AI inference.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-----------------------------------------------------------------------------------+
|                              SoloBooks AI Client                                  |
|   Next.js 16 App Router (React 19, TypeScript Strict, Tailwind CSS v4, Recharts)  |
+-----------------------------------------------------------------------------------+
        |                                       |
        | Server Actions / Local API Routes     | Client State &amp;amp; Dark/Light Theme
        v                                       v
+-----------------------------------------------------------------------------------+
|                           Local Application Services Layer                        |
|                                                                                   |
|  +-------------------------+  +-------------------------+  +--------------------+ |
|  |     Document Service    |  |       OCR &amp;amp; Parser      |  |   Model Adapter    | |
|  | (Validation, Storage)   |  | (pdf-parse, Tesseract)  |  | (Ollama Connector) | |
|  +-------------------------+  +-------------------------+  +--------------------+ |
|               |                            |                          |           |
|               v                            v                          v           |
|  +------------------------------------------------------------------------------+ |
|  |                         Deterministic Accounting Engine                      | |
|  |       (Minor-unit integer math, aggregation, date filters, deduplication)     | |
|  +------------------------------------------------------------------------------+ |
+-----------------------------------------------------------------------------------+
        |                                                         |
        v                                                         v
+----------------------------------+          +-------------------------------------+
|        Local SQLite Database     |          |       Local Ollama Daemon           |
|     (via @libsql/client engine)  |          |      (http://127.0.0.1:11434)       |
|    Path: ./data/solobooks.db     |          |   Models: llama3:latest, qwen2.5:3b |
+----------------------------------+          +-------------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  1. Frontend &amp;amp; Visual Design
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework:&lt;/strong&gt; Next.js 16 (App Router) with React 19 and TypeScript in strict mode.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling:&lt;/strong&gt; Tailwind CSS v4 customized with a dedicated forest green and deep emerald design system (&lt;code&gt;#059669&lt;/code&gt; / &lt;code&gt;#10b981&lt;/code&gt;), soft-neutral light mode surfaces, and deep charcoal dark mode surfaces.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Charts:&lt;/strong&gt; Recharts for client-side monthly cash flow bar charts and categorical expense distribution pie charts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Icons:&lt;/strong&gt; Lucide React for consistent financial and interface iconography.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Local Database &amp;amp; Persistence
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Engine:&lt;/strong&gt; SQLite managed via &lt;code&gt;@libsql/client&lt;/code&gt;, providing crash-proof, zero-native-build embedded database operations across platforms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Integrity:&lt;/strong&gt; All currency values are stored as integer minor units (e.g., &lt;code&gt;4500000&lt;/code&gt; paise for ₹45,000.00 or &lt;code&gt;4999&lt;/code&gt; cents for $49.99). This completely eliminates floating-point precision drift.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;File Quarantine:&lt;/strong&gt; Uploaded receipts and invoices are validated (15 MB limit, whitelist of MIME types, path traversal stripping) and saved to &lt;code&gt;./data/documents/&lt;/code&gt; using random UUIDs. Only relative storage paths are tracked in the database.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Document Processing &amp;amp; Local OCR
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tesseract.js v7:&lt;/strong&gt; Pure JavaScript and WebAssembly OCR engine for scanned receipts and photos. Runs in a dedicated background worker without needing external C++ system binaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PDF-Parse:&lt;/strong&gt; Extracts native text streams from digital invoices and e-receipts without OCR latency.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Local Open-Weight AI &amp;amp; Structured Validation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ollama Local API:&lt;/strong&gt; Connects via &lt;code&gt;http://127.0.0.1:11434&lt;/code&gt; to execute inference entirely on-device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verified Models:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;llama3:latest&lt;/code&gt; (8.03B parameters, Meta Llama 3 Community License) — Verified locally.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;qwen2.5:3b&lt;/code&gt; (3.09B parameters, Apache 2.0 Open-Source License) — Supported lightweight model for 8GB RAM laptops.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schema Validation with Zod:&lt;/strong&gt; Extraction prompts enforce &lt;code&gt;format: "json"&lt;/code&gt;, and raw responses are validated through a strict &lt;code&gt;ExtractedLlmSchema&lt;/code&gt;. Missing fields are preserved as &lt;code&gt;null&lt;/code&gt; rather than allowing the model to hallucinate dates or invoice numbers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt Injection Defense:&lt;/strong&gt; Document text is passed in delimited &lt;code&gt;&amp;lt;document_text&amp;gt;&lt;/code&gt; blocks with explicit system instructions to ignore prompt injection attempts embedded inside invoices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Replaceable Model Adapter:&lt;/strong&gt; AI communication is decoupled behind a generic &lt;code&gt;ModelAdapter&lt;/code&gt; interface (&lt;code&gt;src/lib/ai/adapter.ts&lt;/code&gt;), enabling seamless model swapping and automated mocking in tests.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Automated Testing
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Verified test suite running on Vitest (&lt;code&gt;npm test&lt;/code&gt;): &lt;strong&gt;17 passed out of 17 tests&lt;/strong&gt; covering minor-unit arithmetic, document security, schema validation, duplicate detection, invoice state transitions, and real Ollama connectivity.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Commercial AI platforms have democratized language capabilities, but sending proprietary financial records, client names, invoice totals, and tax documents to remote APIs introduces severe compliance, confidentiality, and financial liabilities for independent business operators.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Benefits of Open Innovation in Small-Business AI:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Absolute Data Sovereignty:&lt;/strong&gt; When a model runs locally, your client lists, hourly rates, and tax deductions never leave your device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Marginal Inference Cost:&lt;/strong&gt; Once weights are downloaded, analyzing 10 receipts or 10,000 receipts costs exactly $0.00 in API tokens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Freedom from Vendor Lock-In:&lt;/strong&gt; With open-weight models (like Qwen 2.5 under Apache 2.0), developers and users are not vulnerable to arbitrary pricing hikes, deprecation notices, or sudden API terms changes.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Honest Technical Trade-offs &amp;amp; Limitations:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local Storage Overhead:&lt;/strong&gt; Downloading model weights requires between ~1.9 GB (for 3B models) and ~4.7 GB (for 8B models) of disk space.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardware Requirements:&lt;/strong&gt; Smooth inference requires at least 8 GB of RAM for 3B parameter models and 16 GB of RAM (or dedicated VRAM) for 8B models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Processing Time:&lt;/strong&gt; On pure CPU hardware, local OCR and inference may take 5 to 15 seconds per document, compared to near-instant results on GPU-accelerated rigs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline vs. Local:&lt;/strong&gt; While model inference and database operations run 100% offline once setup is complete, initial setup requires downloading Ollama and pulling model weights while connected to the internet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verified Behavior:&lt;/strong&gt;
&amp;lt;!-- Confirm the exact offline / local behavior you personally verified during your local runs: --&amp;gt;
&lt;em&gt;I personally verified that with the network disconnected, SoloBooks AI continues to serve the full dashboard, process local PDF text, execute SQLite queries, calculate deterministic totals, and export RFC 4180 CSV files.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Business Model: Who Might Pay for It?
&lt;/h2&gt;

&lt;p&gt;SoloBooks AI is conceived as a sustainable side hustle aimed at solo operators who want professional recordkeeping without enterprise SaaS subscriptions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Current Implementation vs. Commercial Roadmap
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free Core (Currently Implemented &amp;amp; Open-Source):&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Unlimited local document OCR and PDF extraction.&lt;/li&gt;
&lt;li&gt;Local Ollama model integration and schema validation.&lt;/li&gt;
&lt;li&gt;Expense and invoice tracking with status transitions.&lt;/li&gt;
&lt;li&gt;Grounded AI Financial Assistant.&lt;/li&gt;
&lt;li&gt;RFC 4180 CSV and JSON data exports.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proposed Pro Tier (Planned Commercial Feature Concept):&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Automated Bank Statement CSV Mapping:&lt;/em&gt; Intelligent schema mapping for diverse credit card and bank export formats.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Bulk Queue Processing:&lt;/em&gt; Drag-and-drop batch import of up to 50 documents simultaneously.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Encrypted Local Backups:&lt;/em&gt; One-click password-encrypted snapshot archives for tax audit preparation.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Native Desktop Packaging:&lt;/em&gt; Tauri-based single-binary executable for zero-terminal installation.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Target Pricing Concept:&lt;/em&gt; Proposed at a modest ₹499/month ($6/month) one-time or subscription license.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;(Note: In accordance with challenge rules, payment processing and subscriptions are strictly proposals and have not been falsely implemented.)&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  My First User
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tester Profile:&lt;/strong&gt; &amp;lt;!-- [e.g., Freelance UI/UX designer managing client invoices and monthly software expenses] --&amp;gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflow Tested:&lt;/strong&gt; &amp;lt;!-- [e.g., Imported 3 sample PDF receipts (AWS, Figma, Coworking pass), reviewed extracted candidate values, and exported a month-end CSV] --&amp;gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Actual Feedback Received:&lt;/strong&gt; &amp;lt;!-- [Insert direct quote or genuine observations from your tester] --&amp;gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Willingness to Pay:&lt;/strong&gt; &amp;lt;!-- [Record their honest reaction to the proposed side-hustle pricing model] --&amp;gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent Framework / Tooling:&lt;/strong&gt; Built with Google Antigravity Advanced Agentic Coding pairing on architecture, database schema, local AI adapter, and Vitest test suite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session Reference:&lt;/strong&gt; &amp;lt;!-- [Insert DevRelay or agent transcript reference if available, or omit] --&amp;gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Category:&lt;/strong&gt; Hacktoberfest Week 2: Side Hustle&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Applicable Partner Categories:&lt;/strong&gt; &amp;lt;!-- [List eligible partner categories, e.g., Ollama / Open-Source AI integration, or remove if not applicable] --&amp;gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Individual Submission Note
&lt;/h2&gt;

&lt;p&gt;This project was conceived, architected, and built individually by me for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle. All source code, database schemas, local model adapters, and UI components were developed without uncredited external collaborators.&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;SoloBooks AI demonstrates that local open-weight AI is not merely an alternative to cloud APIs—it is the foundational technology that makes privacy-first, zero-marginal-cost software a viable and sustainable side hustle for the next generation of independent creators.&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>TerraQuest AI: The Open-Weight AI Companion Built to Get You Off Screens and Into Nature</title>
      <dc:creator>Jagannath Padhi</dc:creator>
      <pubDate>Sun, 11 Oct 2026 18:41:42 +0000</pubDate>
      <link>https://dev.to/jagannath135/terraquest-ai-the-open-weight-ai-companion-built-to-get-you-off-screens-and-into-nature-5ek7</link>
      <guid>https://dev.to/jagannath135/terraquest-ai-the-open-weight-ai-companion-built-to-get-you-off-screens-and-into-nature-5ek7</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Modern humans spend over 7 hours a day staring into glowing screens. This chronic screen exposure fuels digital fatigue, fragmented attention, and sensory deprivation. While many of us genuinely want to spend more time outdoors, turning that intention into reality is often blocked by subtle cognitive friction:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Where should I go? What should I do? I only have 15 minutes between meetings, so why bother?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Most AI applications worsen this problem: they are conversational chatbots engineered to maximize on-screen engagement, encouraging users to stay seated and keep typing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TerraQuest AI turns this paradigm upside down.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Core Product Principle:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;"AI creates the plan. The user experiences the physical world."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;TerraQuest AI&lt;/strong&gt; is a personal outdoor adventure companion powered by open-weight AI (Google's Gemma instruction architecture). In less than 10 seconds, it converts your available schedule (10 to 120 minutes), energy level, environmental setting, group type, and mobility needs into an actionable, real-life &lt;strong&gt;Outdoor Mission Card&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Gets People Off the Screen and Into Nature
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Time-Bounded Precision:&lt;/strong&gt; Generates structured timelines whose steps sum accurately to your available time (e.g., a 15-minute Green Reset, a 30-minute detective walk, or a 45-minute family nature scavenger safari).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Action Over Scrolling:&lt;/strong&gt; It produces a concise, practical checklist—not a chat thread—ready to be put away before you step out the door.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screen-Free Challenges:&lt;/strong&gt; Every mission issues an explicit commitment to keep smartphones pocketed on silent, set to airplane mode, or left indoors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Distraction-Free Mission Mode (&lt;code&gt;/adventure/[id]&lt;/code&gt;):&lt;/strong&gt; An outdoor-optimized interface with oversized high-contrast typography readable in bright sunlight, an activity timer, and step progression.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private Nature Reflection Journal (&lt;code&gt;/journal&lt;/code&gt;):&lt;/strong&gt; After returning indoors, users capture tactile, auditory, and visual observations and record state shifts (how they felt before vs. after). Data remains 100% private in local browser storage and can be exported to CSV or JSON.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Who Is It For?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Screen-Fatigued Remote Workers:&lt;/strong&gt; Seeking a quick 10–15 minute reset to reduce eye strain and lower cortisol levels.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Urban &amp;amp; Suburban Explorers:&lt;/strong&gt; Discovering hidden biodiversity (micro-canopy lichens, tree heritage, bird flight patterns) right on their neighborhood streets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Balcony &amp;amp; Container Gardeners:&lt;/strong&gt; Engaging hands-on with living soil, moisture gradients, and root aeration in small spaces.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mindful Observers &amp;amp; Photographers:&lt;/strong&gt; Practicing observation of natural geometries without phone filters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Families &amp;amp; Small Groups:&lt;/strong&gt; Collaborative sensory quests that engage children and companions in the physical world.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local Running App:&lt;/strong&gt; Accessible at &lt;code&gt;http://localhost:3000&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cover Art &amp;amp; Visuals:&lt;/strong&gt; &lt;code&gt;public/cover.jpg&lt;/code&gt; (included in repository)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To run the live interactive demo locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/Jagannath357/Hacktoberfest-week1.git
&lt;span class="nb"&gt;cd &lt;/span&gt;Hacktoberfest-Week1
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Visit &lt;code&gt;http://localhost:3000&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Interface Preview
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Quick-Start Planner:&lt;/strong&gt; Instant time pills (10, 15, 30, 60, 120 min), category selectors, and energy filters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Distraction-Free Mission Mode:&lt;/strong&gt; Clean outdoor player with Screen-Free Mode toggle and completion confetti.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Curated Mission Library:&lt;/strong&gt; Ready-to-go activities filterable by difficulty and category without external network calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personal Dashboard:&lt;/strong&gt; Calculates real outdoor minutes and completed activities.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;(Tip: You can attach the included generated cover image from &lt;code&gt;public/cover.jpg&lt;/code&gt; as your article header!)&lt;/em&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;The entire codebase is open-source under the MIT License on GitHub:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Jagannath357" rel="noopener noreferrer"&gt;
        Jagannath357
      &lt;/a&gt; / &lt;a href="https://github.com/Jagannath357/Hacktoberfest-week1" rel="noopener noreferrer"&gt;
        Hacktoberfest-week1
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🌲 TerraQuest AI&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;strong&gt;"Less scrolling. More exploring."&lt;/strong&gt;&lt;br&gt;
  &lt;em&gt;An open-weight AI outdoor adventure companion built for Hacktoberfest 2026 Week 1: Touch Grass.&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/Jagannath357/Hacktoberfest-week1#-quick-start" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt; •
  &lt;a href="https://github.com/Jagannath357/Hacktoberfest-week1#-core-concept" rel="noopener noreferrer"&gt;Core Concept&lt;/a&gt; •
  &lt;a href="https://github.com/Jagannath357/Hacktoberfest-week1#-features" rel="noopener noreferrer"&gt;Features&lt;/a&gt; •
  &lt;a href="https://github.com/Jagannath357/Hacktoberfest-week1#-system-architecture" rel="noopener noreferrer"&gt;Architecture&lt;/a&gt; •
  &lt;a href="https://github.com/Jagannath357/Hacktoberfest-week1#-open-weight-ai-model" rel="noopener noreferrer"&gt;Open-Weight AI&lt;/a&gt; •
  &lt;a href="https://github.com/Jagannath357/Hacktoberfest-week1#-documentation" rel="noopener noreferrer"&gt;Docs&lt;/a&gt; •
  &lt;a href="https://github.com/Jagannath357/Hacktoberfest-week1#-license" rel="noopener noreferrer"&gt;License&lt;/a&gt;
&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📖 The Problem &amp;amp; Vision&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Modern humans spend over 7 hours a day staring into backlit displays. This chronic screen exposure fuels digital fatigue, shortened attention spans, and sensory deprivation. While many intend to spend more time outdoors, turning that intention into reality is blocked by friction: &lt;em&gt;Where do I go? What should I do? I only have 15 minutes.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Most AI tools worsen this issue: they are conversational chatbots designed to maximize on-screen session duration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TerraQuest AI inverts this paradigm.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Core Product Principle:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"AI creates the plan. The user experiences the world."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;TerraQuest AI takes your available time (10 to 120 minutes), energy level, environmental setting, group dynamic, and accessibility preferences, and…&lt;/p&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Jagannath357/Hacktoberfest-week1" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/Jagannath357/Hacktoberfest-week1" rel="noopener noreferrer"&gt;https://github.com/Jagannath357/Hacktoberfest-week1&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tech Stack:&lt;/strong&gt; Next.js 16 (App Router), React 19, TypeScript (strict mode), Tailwind CSS, &lt;code&gt;@google/genai&lt;/code&gt; SDK, Zod, and Vitest.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Open-Weight AI Integration: Gemma Instruction Models
&lt;/h3&gt;

&lt;p&gt;The project is built around Google's &lt;strong&gt;Gemma open-weight instruction models&lt;/strong&gt; (&lt;code&gt;gemma-2-9b-it&lt;/code&gt;) using the official &lt;code&gt;@google/genai&lt;/code&gt; (v2.28) unified SDK.&lt;/p&gt;

&lt;p&gt;To protect the user experience from conversational drift and hallucinations, TerraQuest uses a structured system prompt that enforces strict real-world principles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Grounded Realism:&lt;/strong&gt; Never invent current weather, business opening hours, trail conditions, or local events.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Location Boundaries:&lt;/strong&gt; Recommends general setting types (e.g., "community park, tree-lined street") rather than fabricating proprietary coordinates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outdoor Safety &amp;amp; Leave No Trace:&lt;/strong&gt; Explicitly forbids recommending disturbing wildlife, entering restricted areas, approaching dangerous animals, or consuming unidentified wild plants.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured JSON Schema:&lt;/strong&gt; The model returns valid JSON strictly conforming to &lt;code&gt;AdventureMissionSchema&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Provider Adapter Architecture
&lt;/h3&gt;

&lt;p&gt;The backend uses a decoupled provider adapter pattern:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;AIProvider&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nf"&gt;generateAdventure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;AdventureRequestInput&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;GenerationResult&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;GoogleAIProvider&lt;/code&gt;:&lt;/strong&gt; Directly queries the configured Gemma open-weight instruction model via Google AI Studio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;CuratedFallbackProvider&lt;/code&gt;:&lt;/strong&gt; A deterministic local activity engine that proportionally scales step durations and adapts safety notes without requiring an API key or network connection.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Resilience &amp;amp; Rate-Limit Strategy
&lt;/h3&gt;

&lt;p&gt;If the remote API encounters an HTTP 429 rate limit, quota exhaustion, network disruption, or an invalid key:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TerraQuest automatically routes through the curated fallback engine.&lt;/li&gt;
&lt;li&gt;Every card displays an honest &lt;strong&gt;Source Disclosure Badge&lt;/strong&gt; (&lt;code&gt;Gemma Open-Weight&lt;/code&gt; vs &lt;code&gt;Curated Engine&lt;/code&gt;). The application never fails and never misrepresents fallback data as live AI output.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. System Architecture Flow
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User (Browser) 
  ──&amp;gt; Next.js App Router Client (/create)
  ──&amp;gt; POST /api/adventures/generate (Zod Validated, Rate Limited: 20 req/min)
  ──&amp;gt; Provider Adapter (Google Gemma / Curated Fallback)
  ──&amp;gt; Validated Mission Card
  ──&amp;gt; Distraction-Free Mode (/adventure/:id)
  ──&amp;gt; User Locks Device &amp;amp; Explores Outdoors
  ──&amp;gt; Private Nature Reflection Journal (/journal in localStorage)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Automated Verification &amp;amp; Testing
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;13 automated tests&lt;/strong&gt; via &lt;strong&gt;Vitest&lt;/strong&gt; verifying input validation, duration proportionality, and curated library integrity (&lt;code&gt;npm test&lt;/code&gt; — 100% pass rate).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strict TypeScript:&lt;/strong&gt; Checked with zero errors (&lt;code&gt;npx tsc --noEmit&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production Build:&lt;/strong&gt; Prerendered with Next.js Turbopack (&lt;code&gt;npm run build&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Open-source and open-weight AI are foundational to this project for several critical reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Freedom From Closed-Model Lock-In:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Proprietary closed-API models can change pricing, alter system prompts, or deprecate endpoints overnight. Because Gemma's model weights and architecture are published openly under the Gemma Terms of Use, developers have long-term predictability. The provider adapter in TerraQuest can easily be retargeted to run on self-hosted Ollama or vLLM instances without changing a single line of business logic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Algorithmic Transparency &amp;amp; Safety:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
When building software that guides people in the physical outdoors, safety and predictability are paramount. Open architectures allow developers to inspect model cards, evaluate safety benchmarks, and test behavior openly rather than trusting a corporate black box.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Path to True Offline Edge Inference:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
While this MVP uses Google AI Studio endpoints for fast evaluation, the long-term goal of an outdoor app is zero-connectivity field execution. Because Gemma has lightweight open-weight variants (such as Gemma 2B), future iterations of TerraQuest AI can compile the model directly to on-device WebGPU (via Transformers.js or ONNX Runtime Web). You can truly be in the deep backcountry with no cell reception and still generate a mindful nature expedition.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;This project was architected, implemented, tested, and documented in pair programming sessions using Google DeepMind's Antigravity agentic environment. The agent assisted in scaffold generation, Zod schema validation, Vitest test authoring, responsive Tailwind layout creation, Next.js 16 partial prerendering compliance, and end-to-end browser verification.&lt;/p&gt;




&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Touch Grass (Week 1 Theme):&lt;/strong&gt; Primary challenge submission directly designed to minimize screen addiction and guide humans into the natural world.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-Weight AI Innovation:&lt;/strong&gt; Built on Google's Gemma open-weight instruction models with provider-agnostic architecture.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Team Submissions
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Individual submission by Jagannath (&lt;a href="https://dev.to/jagannath357"&gt;@jagannath357&lt;/a&gt;).&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Less scrolling. More exploring. Step outside, breathe deeply, and touch grass!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
