Skip to content

πŸͺΊ AI-powered prenatal storytelling companion for expectant parents. Generate personalized, calming bedtime stories to bond with your unborn baby.

License

Notifications You must be signed in to change notification settings

ccraig09/evernest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

63 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

EverNest

AI-powered prenatal storytelling companion for expectant parents

EverNest generates personalized, calming bedtime stories for expectant parents to read aloud to their unborn baby. It creates a gentle bonding ritual through AI-generated stories customized with parent names, baby nicknames, and chosen themes.

Features

  • Personalized Stories: Stories featuring your names, your baby's nickname, and themes you choose
  • Theme Selection: Colors & Shapes, Love & Bonding, Nature & Calm, Spiritual & Light, Rhythm & Sound, Family Legacy, Discipline & Values, or Surprise Me
  • Adjustable Length: Quick (~2 min), Short (~2-3 min), Standard (~4 min), or Long (~5-6 min)
  • Faith Preferences: Faith-based, Spiritual, or Non-religious tones
  • Two Parent Support: Enter both parent names for inclusive storytelling
  • Story Library: Save and browse your generated stories
  • Favorites: Mark stories you love for easy access
  • Uniqueness: Prevents duplicate stories with the same configuration

Tech Stack

  • Framework: Next.js 16 (App Router)
  • Language: TypeScript
  • Styling: Tailwind CSS 4
  • UI Components: shadcn/ui (Radix primitives)
  • Authentication: Auth.js (NextAuth v5)
  • Database: PostgreSQL via Prisma ORM
  • AI: Google Gemini API (@google/genai)

Getting Started

Prerequisites

  • Node.js 20+
  • PostgreSQL database (Neon, Supabase, or local)
  • Gemini API key from Google AI Studio

Installation

  1. Clone and install dependencies:
git clone https://github.com/ccraig09/evernest.git
cd evernest
npm install
  1. Copy environment variables:
cp env.example .env.local
  1. Configure .env.local:
# Database
DATABASE_URL="postgresql://user:password@host:5432/evernest?sslmode=require"

# Auth.js
AUTH_SECRET="generate-with: openssl rand -base64 32"
AUTH_URL="http://localhost:3000"

# Gemini API
GEMINI_API_KEY="your-gemini-api-key"
  1. Initialize the database:
npm run db:push
  1. Start the development server:
npm run dev

Visit http://localhost:3000 to see the app.

Documentation

Agent Skills

This project is equipped with the following Agent Skills to assist with development:

  • DEPLOYMENT_OPS: Standards for reliable Vercel/Neon deployments.
  • STORY_QA: Protocols for testing the story generation user flow.

Project Structure

evernest/
β”œβ”€β”€ src/                    # Production Next.js app
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ (app)/          # Authenticated app routes
β”‚   β”‚   β”‚   β”œβ”€β”€ dashboard/  # Main dashboard
β”‚   β”‚   β”‚   β”œβ”€β”€ library/    # Story library
β”‚   β”‚   β”‚   └── settings/   # User settings
β”‚   β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”‚   β”œβ”€β”€ auth/       # Auth.js routes
β”‚   β”‚   β”‚   └── stories/    # Story API routes
β”‚   β”‚   β”œβ”€β”€ auth/           # Auth pages
β”‚   β”‚   └── page.tsx        # Landing page
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ layout/         # App shell, navigation
β”‚   β”‚   β”œβ”€β”€ providers/      # Theme provider
β”‚   β”‚   └── ui/             # shadcn/ui components
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ auth.ts         # Auth.js config
β”‚   β”‚   β”œβ”€β”€ db.ts           # Prisma client
β”‚   β”‚   β”œβ”€β”€ gemini.ts       # Gemini AI service
β”‚   β”‚   β”œβ”€β”€ types.ts        # TypeScript types
β”‚   β”‚   └── utils.ts        # Utility functions
β”‚   └── server/
β”‚       β”œβ”€β”€ story-service.ts # Story business logic
β”‚       └── utils.ts        # Server-only utilities
β”œβ”€β”€ prototype/              # Original Vite prototype (reference)
β”‚   β”œβ”€β”€ apps/prototype/     # Vite + React prototype app
β”‚   β”œβ”€β”€ flows/              # User flow diagrams
β”‚   β”œβ”€β”€ notes/              # Design notes
β”‚   └── README.md           # Prototype documentation
β”œβ”€β”€ prisma/
β”‚   └── schema.prisma       # Database schema
└── docs/
    └── architecture.md     # Architecture overview

API Routes

Method Path Description
POST /api/stories Generate a new story
GET /api/stories List user's stories
GET /api/stories/[id] Get a single story
PATCH /api/stories/[id] Toggle favorite
DELETE /api/stories/[id] Delete a story

Scripts

npm run dev          # Start dev server with Turbopack
npm run build        # Build for production
npm run start        # Start production server
npm run lint         # Run ESLint
npm run test         # Run Jest tests
npm run db:push      # Push schema to database

Development

This project follows strict TypeScript practices and includes:

  • ESLint for code quality
  • Jest for testing
  • Prisma for type-safe database access
  • shadcn/ui for consistent component design

Run tests before committing:

npm run lint
npm run test

License

MIT License - see LICENSE for details.


EverNest provides creative storytelling for bonding purposes only. It does not provide medical advice.

About

πŸͺΊ AI-powered prenatal storytelling companion for expectant parents. Generate personalized, calming bedtime stories to bond with your unborn baby.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published