A production-grade, consumer-facing web app for high-trust groups to have conversations that are automatically remembered, organized, and searchable.
- Frontend: Next.js 14 (App Router), React, TypeScript, Tailwind CSS
- Backend: Java 21, Spring Boot 4.0.1, PostgreSQL, Flyway
- Authentication: NextAuth.js + Firebase
- Real-time: Server-Sent Events (SSE) for thread updates
- Node.js 18+
- Java 21 JDK
- Maven 3.8+
- Docker & Docker Compose
docker-compose up -d postgresPlace your Firebase service account JSON at:
backend-java/firebase-service-account.json
Or set:
export FIREBASE_CREDENTIALS_PATH=/path/to/firebase-service-account.jsonnpm installCreate .env.local:
NEXT_PUBLIC_BACKEND_URL=http://localhost:8080
# Add your NextAuth and Firebase config here# Run frontend and backend together
npm run dev:all
# Or separately:
npm run dev:frontend # Next.js on :3000
npm run dev:backend # Spring Boot on :8080.
├── app/ # Next.js App Router pages
│ ├── api/ # API routes (proxies to Java backend)
│ ├── app/ # Main app pages (inbox, thread, library, etc.)
│ └── auth/ # Authentication pages
├── components/ # React components
│ ├── weave/ # WEAVE-specific components
│ └── ui/ # Reusable UI components
├── backend-java/ # Spring Boot backend
│ ├── src/main/java/ # Java source code
│ └── src/main/resources/ # Config & migrations
├── lib/ # Shared utilities & types
└── docker-compose.yml # PostgreSQL container
npm run dev:frontendVisit http://localhost:3000
cd backend-java
mvn spring-boot:runVisit http://localhost:8080/swagger-ui for API docs
Flyway automatically runs migrations on backend startup. Migrations are in:
backend-java/src/main/resources/db/migration/
All backend endpoints are under /v1/:
- Threads:
GET /v1/threads,GET /v1/threads/{id} - Messages:
POST /v1/messages/send - Entities:
POST /v1/entities/extract - Library:
GET /v1/library - Search:
GET /v1/search?q=... - Activity:
GET /v1/activity - Notifications:
GET /v1/notifications - Voice:
POST /v1/voice/generate(stub) - Onboarding:
POST /v1/onboarding/complete
- User authenticates via NextAuth.js (Firebase)
- Next.js API routes get Firebase ID token from session
- API routes proxy requests to Java backend with
Authorization: Bearer <token> - Java backend verifies token via Firebase Admin SDK
- Backend auto-provisions user if missing
NEXT_PUBLIC_BACKEND_URL=http://localhost:8080
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your-secret
# Firebase configDB_USERNAME=weave
DB_PASSWORD=weave
FIREBASE_CREDENTIALS_PATH=./firebase-service-account.json
SERVER_PORT=8080npm run build
npm startcd backend-java
mvn clean package
java -jar target/backend-1.0.0.jar- Check PostgreSQL is running:
docker-compose ps - Verify database credentials in
application.yml - Check Firebase credentials path is correct
- Review logs:
mvn spring-boot:runor checklogs/directory
- Verify
NEXT_PUBLIC_BACKEND_URLin.env.local - Check backend is running on port 8080
- Check CORS settings in
SecurityConfig.java
- Ensure PostgreSQL container is running:
docker-compose up -d postgres - Check connection string in
application.yml - Verify database
weaveexists (created automatically)
Proprietary - All rights reserved