Skip to content

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

 
 
 

Contributors