Helping 150+ education NGOs design programs using the Common LFA framework to transform 1 million schools.
A comprehensive web-based platform that guides education-focused NGOs through creating Logical Framework Approach (LFA) documents for program design using proven Common LFA templates across 9 themes (FLN, Career Readiness, STEM, Digital Literacy, SEL, Gender Equity, Early Childhood, Teacher Professional Development, Inclusive Education).
- 7-Step Guided Wizard: Structured questions for problem definition, outcomes, interventions, stakeholders, practice changes, and indicators
- Common LFA Templates: JSON-driven templates for 9 themes with ready outcomes, indicators, and practice changes
- PDF Export: Download professional LFA documents with jsPDF
- Auto-Save: Automatic progress saving every 30 seconds
- Authentication: Secure user accounts with password reset
- Gamification: Points, badges, and progress tracking (
⚠️ Badges coming soon - core points working) - Project Management: Create, edit, and manage multiple projects
- Analytics Dashboard: Track completion and design patterns
- Error Boundaries: Graceful error handling with recovery options
- SEO Optimized: Open Graph tags, Twitter cards, custom favicon
- Legal Pages: Privacy Policy and Terms of Service
- Offline-First PWA: Installable on mobile with caching for dashboard, wizard, and templates
- Frontend: Next.js 16.0.10 (Turbopack), React 19, TypeScript
- Backend: Supabase (PostgreSQL with Row-Level Security)
- Authentication: Supabase Auth with email/password
- Styling: Tailwind CSS 4.1.9
- UI Components: Radix UI primitives
- Notifications: Sonner toast library
- PDF Generation: jsPDF library
- Icons: Lucide React + custom SVG favicon
- PWA: Service worker + manifest for offline caching and install prompt
- Deployment: Vercel-ready
- Node.js 18+ and npm
- Supabase account (free tier works)
- Vercel account (optional, for deployment)
git clone <repository-url>
cd lfa
npm installGet your Supabase credentials:
- Go to https://supabase.com/dashboard
- Create a new project (or select existing)
- Go to Settings > API
- Copy the Project URL and anon/public key
Update .env.local:
NEXT_PUBLIC_SUPABASE_URL=https://your-project-id.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key-here- Open your Supabase project
- Go to SQL Editor
- Copy the contents of
scripts/01-create-schema.sql - Run the SQL script
- (Optional) Run
scripts/seed-templates.sqlfor sample templates
npm run devOpen http://localhost:3000 in your browser.
npm run build
npm startCreate a .env.local file with:
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_keyThe database schema is automatically created when you set up Supabase. To seed templates:
- Go to your Supabase SQL Editor
- Run
scripts/seed-templates.sql
├── app/
│ ├── auth/ # Authentication (login, signup, password reset)
│ ├── dashboard/ # User dashboard with projects
│ ├── wizard/ # 7-step LFA wizard (main feature)
│ ├── templates/ # Template library
│ ├── analytics/ # Analytics dashboard
│ ├── help/ # Help center and FAQ
│ ├── privacy/ # Privacy policy page
│ ├── terms/ # Terms of service page
│ └── api/ # API routes (track-event)
├── components/
│ ├── wizard/ # Wizard step components (Step1-Step7)
│ ├── header.tsx # Global navigation header
│ ├── error-boundary.tsx # Error handling wrapper
│ └── ui/ # Reusable UI components (Radix UI)
├── lib/
│ ├── supabase.ts # Supabase client setup
│ ├── pdf-utils.ts # PDF export with jsPDF
│ ├── wizard-types.ts # TypeScript type definitions
│ ├── templates-data.json # Source of all 9 Common LFA templates
│ ├── common-lfa-templates.ts # Helpers to load templates from JSON
│ └── gamification.ts # Points and badges system
├── scripts/
│ ├── 01-create-schema.sql # Database initialization
│ └── seed-templates.sql # Sample template data
└── public/manifest.json # PWA manifest (install + icons)
- Sign Up: Create an account at
/auth/signup - Dashboard: Access your dashboard at
/dashboard - New Project: Click "Create New Program Design"
- 7-Step Wizard: Complete all steps:
- Step 1: Define the core problem
- Step 2: Set student-level outcomes
- Step 3: Design intervention strategy
- Step 4: Identify key stakeholders
- Step 5: Map practice changes
- Step 6: Define indicators
- Step 7: Review and export
- Export: Download as PDF, Text, JSON, or Print
- Visit
/templatespage - Browse 9 Common LFA templates (FLN, Career Readiness, STEM, Digital Literacy, SEL, Gender Equity, Early Childhood, Teacher PD, Inclusive Education)
- Click template to view details
- Use template to pre-fill wizard steps
From Step 7 (Review), you can export in 5 formats:
- PDF: Professional formatted document (jsPDF)
- Text: Plain text file (.txt)
- JSON: Structured data export
- Copy: Copy to clipboard
- Print: Browser print dialog
- Open the site in Chrome/Edge (Android/Desktop) or Safari (iOS)
- Tap Install (Chrome/Edge) or Add to Home Screen (Safari)
- Offline caching covers:
/,/dashboard,/wizard,/templates, manifest, icons
- Open lib/templates-data.json
- Add or update a template with:
id,name,category,theme,problemStatement,studentOutcomes[](each hasoutcome_description,indicator_description),stakeholderPracticeChanges[](each hasstakeholder_role,expected_changes[],outcome_indicators[]) - Run
npm run buildto validate structure - No code changes are needed—the app reads directly from JSON
Problem: You see "Supabase configuration is missing" message.
Solution:
- Check
.env.localhas real Supabase credentials (not placeholders) - Restart dev server: Stop (Ctrl+C) and run
npm run devagain - Verify credentials are correct in Supabase dashboard
Problem: "relation 'lfa_projects' does not exist" or similar errors.
Solution:
- Go to Supabase SQL Editor
- Run the complete
database-schema.sqlfile - Verify tables are created in Database > Tables
Problem: "Port 3000 is in use" error.
Solution:
# Windows PowerShell
Get-Process node | Stop-Process -Force
# Mac/Linux
killall node
# Then restart
npm run devProblem: TypeScript compilation errors.
Solution:
# Clear cache and rebuild
rm -rf .next node_modules
npm install
npm run buildProblem: Wizard doesn't save progress automatically.
Solution:
- Ensure you're logged in (check if user email shows in header)
- Verify Supabase connection is working
- Check browser console for errors (F12)
- Auto-save triggers every 30 seconds after typing
- ✅ Row-Level Security (RLS) on all database tables
- ✅ User-specific data isolation
- ✅ Secure authentication with Supabase Auth
- ✅ Password reset via email
- ✅ Environment variable protection
- Target: Transform 1,000,000 schools
- NGO Partners: 150+ education organizations
- Templates: 9 Common LFA frameworks (FLN, Career Readiness, STEM, Digital Literacy, SEL, Gender Equity, Early Childhood, Teacher PD, Inclusive Education)
- Auto-Save: Every 30 seconds
- Export Formats: 5 options (PDF, Text, JSON, Copy, Print)
- All data is protected with Row-Level Security (RLS)
- Authentication handled by Supabase Auth
- HTTPS enforced in production
- CSRF protection included
- SQL injection prevention through parameterized queries
- Push your code to GitHub
- Connect your repository to Vercel
- Add environment variables:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYNEXT_PUBLIC_DEV_SUPABASE_REDIRECT_URL(production URL)
- Click Deploy
For issues or questions:
- Check the documentation at [docs-url]
- Open an issue on GitHub
- Contact rajprakash1046@gmail.com
MIT License - see LICENSE file for details
We welcome contributions! Please see CONTRIBUTING.md for guidelines.