A comprehensive religious social platform built with TypeScript, featuring communities, prayer requests, microblogs, events, and user management.
Backend:
- Node.js with TypeScript
- Express.js server framework
- PostgreSQL database with Drizzle ORM
- Express sessions for authentication
Frontend:
- React with TypeScript
- Vite for build tooling
- TailwindCSS for styling
- Wouter for routing
- TanStack Query for data fetching
- Install Dependencies:
pnpm install- Set up Environment Variables:
Create a
.envfile with:
DATABASE_URL=your_postgresql_connection_string
SESSION_SECRET=your_session_secret
NODE_ENV=developmentFor the web app, copy the example:
cd apps/web
cp .env.example .env
# Edit .env if needed (defaults to /api which works with Vercel proxy)- Set up Database:
pnpm run db:push- Start Development Servers:
# Full stack: starts the API with Vite middleware for the client
pnpm run dev
# Frontend only (optional)
pnpm run dev:clientTo deploy the web app to Vercel:
-
Connect Repository to Vercel:
- Import your GitHub repository in the Vercel dashboard
- Vercel will auto-detect the project settings
-
Set Environment Variables:
- Go to Project Settings > Environment Variables
- Add:
VITE_API_BASEwith value/api - Apply to: Production and Preview
-
Deploy:
- Push to your main branch or create a PR
- Vercel will automatically build and deploy
-
Configure Backend CORS:
- On your API server deployment, the CORS is already configured to allow
*.vercel.appdomains - No additional configuration needed for Vercel deployments
- On your API server deployment, the CORS is already configured to allow
-
Verify Deployment:
- Open your Vercel URL:
https://your-app.vercel.app - Open browser console and run:
fetch('/api/health').then(r => r.json()).then(console.log)
- You should see
{"ok": true}or similar JSON response
- Open your Vercel URL:
📖 For detailed environment configuration, see ENVIRONMENT.md
- User authentication and profiles
- Community management
- Prayer requests and responses
- Microblogging system
- Event scheduling
- Bible study resources
- Admin dashboard
- Real-time features
- Posts are longer-form discussions that belong to communities or groups, support threaded comments, and surface in the forums/feed experiences.
- Microblogs are quick status-style updates (think Twitter threads) limited to a few hundred characters and optimized for lightweight engagement in the feed.
/server- Backend API and authentication/client- React frontend application/shared- Shared TypeScript schemas and types- Database migrations and seeding
Uses PostgreSQL with Drizzle ORM. Run pnpm run db:push to apply schema changes.
The application serves both frontend and backend on the same port using Vite's development server.
pnpm run devstarts the Express API with Vite middleware serving the client (single process dev loop).pnpm run dev:clientruns the client-only Vite dev server if you just need the UI.pnpm run dev:serverruns the API with Vite middleware without also starting the client in another process.
pnpm run buildbuilds both the client and server bundles.pnpm run build:clientbuilds only the Vite client app.pnpm run build:serverbuilds only the server bundle.
- Web E2E tests are documented in
apps/web/TESTING.md(use test IDs only; install the fetch stub before navigation; tests run with a blank API base). gd