//ai-learning-hubbydebs-obrien

ai-learning-hub

๐Ÿง  A personal learning management app for organizing AI-related resources

3
0
3
TypeScript

๐Ÿง  AI Learning Hub

A beautiful, personal learning management app for organizing AI-related resources with a todo-style workflow.

undefinedBuilt with goose in under 30 minutes from a single prompt! ๐Ÿชฟโœจ

โœจ Features

๐Ÿ“š Resource Management

  • undefinedAdd URLs with automatic metadata fetching (title, description, favicon)
  • undefinedSmart categorization: Blog, Video, Podcast, Course, Paper, Other
  • undefinedDrag & drop to reorder priorities
  • undefinedRich notes for each resource

๐Ÿ“‹ Learning Workflow

  • undefinedQueue โ†’ Learning โ†’ Completed status flow
  • Visual indicators for each status (color-coded borders)
  • Easy status transitions via dropdown menu

๐Ÿ’ก Content Ideas

  • Track content creation ideas inspired by your learning
  • Multiple types: Blog Post, Video, Tutorial, Thread
  • Status workflow: Idea โ†’ Drafting โ†’ Published

๐Ÿ” Search & Filter

  • Full-text search across titles, descriptions, and notes
  • Filter by category
  • View all or filter by status

๐Ÿ” Password Protection

  • Simple password authentication for deployment
  • Session-based security

๐Ÿš€ Getting Started

Prerequisites

  • Node.js 18+
  • npm

Installation

# Clone the repository
git clone <your-repo-url>
cd ai-learning-hub

# Install dependencies
npm install

# Start development server
npm run dev

Open http://localhost:3000 in your browser.

Environment Variables

Create a .env.local file:

# Supabase connection
NEXT_PUBLIC_SUPABASE_URL=your-supabase-url
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=your-supabase-key

# App password for authentication
APP_PASSWORD=your-secure-password

# Session secret for cookie signing
SESSION_SECRET=your-random-secret-key

๐Ÿงช Testing

This project uses Playwright for E2E testing with a separate test database.

Test Environment Setup

  1. Create a .env.test.local file with your test database credentials:
NEXT_PUBLIC_SUPABASE_URL=your-test-supabase-url
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=your-test-supabase-key
APP_PASSWORD=your-test-password
SESSION_SECRET=your-test-secret
  1. Seed the test database with sample data:
npm run seed:test

Running Tests

# Run all tests
npx playwright test

# Run tests in UI mode
npx playwright test --ui

# Run specific test file
npx playwright test tests/seed.spec.ts

Development with Test Data

Run the app with the test database for design/development purposes:

npm run dev:test

This starts the app on port 3001 using the test database, so you can work with sample data without affecting production.

Available Scripts

Script Description
npm run dev Start dev server on port 3000 with production database
npm run dev:test Start dev server on port 3001 with test database
npm run seed:test Seed test database with sample resources and ideas
npm run build Build for production
npm run lint Run ESLint

๐ŸŒ Deployment to Netlify

  1. Push your code to GitHub

  2. Connect your repo to Netlify

  3. Set environment variables in Netlify dashboard:

    • APP_PASSWORD: Your chosen password
    • SESSION_SECRET: A random string for session security
  4. Deploy! Netlify will automatically build and deploy

Build Command

npm run build

๐Ÿ› ๏ธ Tech Stack

  • undefinedFramework: Next.js 14 (App Router)
  • undefinedStyling: Tailwind CSS + shadcn/ui
  • undefinedDatabase: SQLite with Drizzle ORM
  • undefinedDrag & Drop: @dnd-kit
  • undefinedIcons: Lucide React
  • undefinedDeployment: Netlify

๐Ÿ“ Project Structure

ai-learning-hub/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ app/
โ”‚   โ”‚   โ”œโ”€โ”€ api/          # API routes
โ”‚   โ”‚   โ”œโ”€โ”€ login/        # Login page
โ”‚   โ”‚   โ””โ”€โ”€ page.tsx      # Main dashboard
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ ui/           # shadcn components
โ”‚   โ”‚   โ”œโ”€โ”€ Dashboard.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ ResourceCard.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ AddResourceModal.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ NotesModal.tsx
โ”‚   โ”‚   โ””โ”€โ”€ ContentIdeas.tsx
โ”‚   โ””โ”€โ”€ lib/
โ”‚       โ”œโ”€โ”€ auth/         # Authentication
โ”‚       โ””โ”€โ”€ db/           # Database setup & schema
โ”œโ”€โ”€ data/                 # SQLite database (gitignored)
โ””โ”€โ”€ netlify.toml          # Netlify configuration

๐Ÿ“ Usage Tips

  1. undefinedAdding Resources: Click โ€œ+ Add URLโ€, paste a link, and the sparkle button will auto-fetch metadata
  2. undefinedPrioritizing: Drag cards up/down to reorder your learning queue
  3. undefinedTaking Notes: Click the menu (โ‹ฎ) on any card โ†’ โ€œAdd Notesโ€
  4. undefinedTracking Progress: Move items through Queue โ†’ Learning โ†’ Done
  5. undefinedContent Ideas: Use the sidebar to track content you want to create

๐ŸŽจ Customization

Adding New Categories

Edit src/lib/db/schema.ts to add new resource categories.

Changing Colors

Modify the Tailwind classes in component files or update globals.css.

๐Ÿ“„ License

MIT License - feel free to use this for your own learning journey!


Built with ๐Ÿ’œ for AI learners everywhere

[beta]v0.14.0