This is the backend content management system for CurioLife, a faith-based spiritual engagement platform. Built on Strapi 5.28.0.
This Strapi instance manages:
- Spiritual Content: Devotionals, prayers, studies, and challenges
- Editorial Workflow: Draft/review/publish lifecycle
- Content Metadata: Themes, difficulty levels, scripture references, duration
- API Delivery: Clean, stable APIs for mobile app consumption
Important: This is backend-only. No business logic, AI, or personalization happens here.
npm installCopy .env.example to .env and configure:
cp .env.example .envnpm run developThis will:
- Start Strapi on http://localhost:1337
- Launch admin panel at http://localhost:1337/admin
- Prompt you to create first admin user
After creating your admin account:
- Go to Settings → Users & Permissions → Roles
- Create these roles:
- Editor: Can create and edit drafts
- Reviewer: Can approve/publish content
- Admin: Full access
See CONTENT_MODEL.md for detailed role configuration.
See CONTENT_MODEL.md for complete documentation of:
- Content types (Devotional, Prayer, Study, Challenge)
- Shared components (themes, difficulty, scripture references)
- API conventions and filtering
- Editorial workflow
- Extension guidelines
Start development server with hot reload
- Admin panel: http://localhost:1337/admin
- API base: http://localhost:1337/api
Build admin panel for production
Start production server (requires build first)
Seed database with example content (to be implemented)
curiolife-cms/
├── config/ # Strapi configuration
├── src/
│ ├── api/ # Content types (devotional, prayer, study, challenge)
│ ├── components/ # Reusable components (metadata, content)
│ └── extensions/ # Custom extensions (keep minimal)
├── database/ # SQLite database (dev only)
├── public/ # Static assets
└── CONTENT_MODEL.md # Content architecture documentation
- Strapi-native features first - Use built-in functionality before custom code
- Strongly typed schemas - All content follows explicit schemas
- Composable components - Reuse metadata and content blocks
- Draft/publish workflow - All content types support editorial review
- No business logic - Keep Strapi as content source of truth only
All published content is accessible via REST API:
- Devotionals:
/api/devotionals - Prayers:
/api/prayers - Studies:
/api/studies - Challenges:
/api/challenges
Example: Get beginner devotionals under 15 minutes:
GET /api/devotionals?filters[difficulty][level][$eq]=Beginner&filters[duration][estimatedMinutes][$lte]=15
See Strapi documentation for filtering syntax.
Before deploying to production:
- Switch to PostgreSQL/MySQL: Edit config/database.js
- Set environment variables:
HOST,PORT,APP_KEYS,API_TOKEN_SALT,ADMIN_JWT_SECRET,TRANSFER_TOKEN_SALT,JWT_SECRET - Build admin panel:
npm run build - Start production server:
npm run start
See Strapi deployment docs for platform-specific guides.
For CurioLife-specific questions, refer to internal documentation.
For Strapi questions: