Discover what has been researched, funded, and learned — and connect with the people behind it.
COMA is a digital platform where researchers, funding bodies, and the public can explore past and ongoing research projects, see where funds went, and engage in topic-based communities to improve collaboration and funding allocation decisions.
- Next.js 15 (App Router)
- TailwindCSS + shadcn/ui
- next-intl (i18n for EN + DE)
- React 19
- TypeScript
- Next.js API routes
- Prisma ORM
- PostgreSQL
- Redis (caching)
- Turborepo (monorepo)
- pnpm (package manager)
- Docker Compose (local development)
coma-1/
├── apps/
│ └── web/ # Next.js frontend application
├── packages/
│ ├── database/ # Prisma schema and client
│ ├── types/ # Shared TypeScript types
│ ├── config/ # Shared configurations
│ └── ui/ # Shared UI components (future)
├── docker-compose.yml # PostgreSQL + Redis services
└── turbo.json # Turborepo configuration
- Node.js >= 20.0.0
- pnpm >= 9.0.0
- Docker and Docker Compose (recommended)
We provide a setup script that automates the entire setup process:
# 1. Clone the repository
git clone <repository-url>
cd coma-1
# 2. Install dependencies
pnpm install
# 3. Run the setup script
./setup.shThe setup script will:
- Copy environment variables
- Start Docker services (PostgreSQL + Redis)
- Generate Prisma client
- Run database migrations
- Optionally seed the database with sample data
If you prefer to set up manually, follow these steps:
- Install dependencies
pnpm install- Set up environment variables
cp .env.example .envEdit .env with your configuration (the defaults work for local development).
- Start the database services
docker compose up -dThis starts PostgreSQL and Redis containers.
- Generate Prisma client and run migrations
pnpm --filter @coma/database db:generate
pnpm --filter @coma/database db:migrate- Seed the database (optional)
pnpm --filter @coma/database db:seed- Start the development server
pnpm devThe application will be available at:
- English: http://localhost:3000/en
- German: http://localhost:3000/de
We also provide a development helper script for common tasks:
./dev.sh start # Start development server
./dev.sh db:studio # Open Prisma Studio
./dev.sh db:seed # Seed database
./dev.sh docker:up # Start Docker services
./dev.sh # See all available commandspnpm dev- Start all apps in development modepnpm build- Build all appspnpm lint- Lint all appspnpm format- Format code with Prettierpnpm type-check- Run TypeScript type checking
pnpm --filter @coma/database db:generate- Generate Prisma clientpnpm --filter @coma/database db:migrate- Run database migrationspnpm --filter @coma/database db:push- Push schema changes without migrationspnpm --filter @coma/database db:seed- Seed the databasepnpm --filter @coma/database db:studio- Open Prisma Studio
pnpm --filter @coma/web dev- Start Next.js dev serverpnpm --filter @coma/web build- Build Next.js apppnpm --filter @coma/web start- Start production server
The platform uses the following core entities:
- User - Platform users (researchers, funders, admins)
- Profile - Extended user profiles with ORCID, bio, research areas
- Funder - Funding organizations
- Project - Research projects with funding details
- Tag - Categorization tags for projects
- Space - Topic-based discussion spaces
- Post - Community posts within spaces
- Comment - Comments on posts
- Annotation - Funder/admin notes on projects
See packages/database/prisma/schema.prisma for the full schema.
Key environment variables (see .env.example):
DATABASE_URL- PostgreSQL connection stringREDIS_URL- Redis connection stringNEXT_PUBLIC_APP_URL- Public application URLNEXTAUTH_URL- NextAuth callback URLNEXTAUTH_SECRET- NextAuth encryption secret
The platform supports English (en) and German (de) languages using next-intl.
Translation files are located in apps/web/src/messages/.
- Repository setup with Turborepo
- Database schema and migrations
- Next.js app with i18n
- Basic UI framework
- Project Explorer with search/filter
- Researcher & Funder profiles
- Authentication (Google, ORCID)
- Community Spaces
- CSV data import
- Advanced search & filters
- Role-based access control
- Moderation tools
- Analytics dashboard
- Semantic search (Azure AI Search)
This project follows the monorepo structure with Turborepo. Each package and app has its own package.json and can be developed independently.
[To be determined]