Skip to content

MeezaanD/keepittogether

Repository files navigation

Keep It Together — Personal Digital Brain

A private, single-user "digital brain" built with Nuxt 4. Designed for fast capture and easy retrieval of personal knowledge—prompts, projects, links, and notes—all in one unified, beautifully designed interface.

Version Nuxt Vue TypeScript

Overview

Keep It Together is a personal knowledge management system that helps you:

  • Capture prompts — Store and organize reusable AI prompts with tags for quick retrieval
  • Track projects — Manage project status, progress, and related notes in one place
  • Save links — Bookmark important resources with descriptions and tags
  • Take notes — Quick capture for thoughts, snippets, and knowledge

The app is designed for a single user (you!) with all data securely stored in Firebase and isolated by user ID.

Features

  • Private & Secure — Single-user deployment with Firebase Auth
  • Fast Capture — Quick-add modals for instant item creation
  • Prompts — Store and organize reusable prompts with tags
  • Projects — Track projects with status and progress
  • Links — Bookmark important resources with descriptions
  • Notes — General-purpose notes with markdown support
  • Light & Dark Themes — Beautiful glassmorphism in light mode, GitHub-style dark mode
  • System Theme Detection — Automatically matches your OS preference
  • Mobile Friendly — Fully responsive design for all devices
  • Modern UI — Clean interface with Element Plus components and Phosphor icons

Design System

The app features a comprehensive dual-theme design system:

Light Mode — "Glassy & Airy"

  • iOS-inspired glassmorphism with backdrop blur effects
  • Semi-transparent surfaces with subtle borders
  • Soft shadows and clean typography
  • macOS-style panel aesthetics

Dark Mode — "GitHub Dark Energy"

  • Professional developer-first dark theme
  • Solid surfaces (no glass effects in dark mode for clarity)
  • High-contrast text with GitHub's color palette
  • Reduced eye strain for extended use

Toggle themes using the sun/moon button in the header, or let it follow your system preference.

Tech Stack

Category Technology
Framework Nuxt 4, Vue 3
Language TypeScript
UI Library Element Plus
Icons Iconify (Phosphor icon set)
State Composables (minimal Pinia)
Auth Firebase Authentication
Database Cloud Firestore
Styling CSS Variables, Glassmorphism

Quick Start

Prerequisites

  • Node.js 18+
  • npm or pnpm
  • Firebase project with Auth and Firestore enabled

Installation

# Clone the repository
git clone <repository-url>
cd keepittogether

# Install dependencies
npm install

# Set up environment variables
cp .env.example .env
# Edit .env with your Firebase credentials

# Start development server
npm run dev

Environment Variables

Create a .env file with your Firebase configuration:

FIREBASE_API_KEY=your-api-key
FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
FIREBASE_PROJECT_ID=your-project-id
FIREBASE_STORAGE_BUCKET=your-project.appspot.com
FIREBASE_MESSAGING_SENDER_ID=your-sender-id
FIREBASE_APP_ID=your-app-id

Firebase Setup

  1. Create a Firebase project at console.firebase.google.com
  2. Enable Email/Password authentication
  3. Create a Firestore database
  4. Create a single user in Firebase Auth (no signup UI in app)
  5. Add your Firebase config to .env

Project Structure

app/
├── components/
│   ├── prompt/          # Prompt-related components
│   ├── project/         # Project-related components
│   ├── link/            # Link-related components
│   ├── note/            # Note-related components
│   └── ui/              # Shared UI components
├── composables/
│   ├── useAuth.ts       # Authentication logic
│   ├── useFirestore.ts  # Generic Firestore operations
│   ├── usePrompts.ts    # Prompts collection
│   ├── useProjects.ts   # Projects collection
│   ├── useLinks.ts      # Links collection
│   └── useNotes.ts      # Notes collection
├── layouts/
│   ├── default.vue      # Main app layout with sidebar
│   └── auth.vue         # Login page layout
├── middleware/
│   └── auth.global.ts   # Route protection
├── pages/
│   ├── index.vue        # Dashboard
│   ├── login.vue        # Login page
│   ├── prompts/         # Prompts feature
│   ├── vault-projects/  # Projects feature
│   ├── links/           # Links feature
│   └── notes/           # Notes feature
├── services/
│   ├── firebase.ts      # Firebase initialization
│   └── firestore.ts     # User-scoped collections
└── types/
    └── vault.ts         # TypeScript interfaces

Data Model

All data is scoped to the authenticated user: users/{uid}/{collection}

Collections

Collection Fields
prompts title, content, tags[], lastUsedAt, createdAt
projects title, description, status, progress, notes[], createdAt
links url, title, description, tags[], createdAt
notes content, relatedEntity?, createdAt

Scripts

npm run dev      # Start development server
npm run build    # Build for production
npm run preview  # Preview production build
npm run start    # Start production server

Mobile Support

The app is fully responsive and optimized for mobile browsers:

  • Collapsible sidebar navigation
  • Touch-friendly action buttons
  • Stacked layouts on small screens
  • Optimized dialog widths
  • Safe area support for notched devices

Extending the App

  1. Add collection name to UserCollectionName in services/firestore.ts
  2. Create interface in types/vault.ts
  3. Create composable using useFirestoreCollection
  4. Build UI components/pages

Security

  • All routes protected by auth middleware
  • No public endpoints
  • User data isolated by UID
  • XSS protection via DOMPurify
  • Firebase security rules recommended

Performance Notes

  • Composables preferred over heavy stores
  • Lazy-load non-critical sections
  • CSS transitions over layout animations
  • Efficient Firestore queries with ordering

Changelog

See CHANGELOG.md for version history.

License

Private project — All rights reserved.

Author

Built by Meezaan Davids

About

A private, single-user "digital brain" built with Nuxt 4. Designed for fast capture and easy retrieval of personal knowledge.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors