Citronics is an open-source event management platform built with Next.js, Material-UI (MUI), and PostgreSQL. It provides a comprehensive suite of tools for managing events, tickets, venues, and attendees, complete with role-based access control (RBAC) and Progressive Web App (PWA) capabilities.
- Event Management: Create, update, and manage events with ease.
- Role-Based Access Control (RBAC): Granular permissions using CASL.
- Authentication: Secure login and session management via NextAuth.js.
- Progressive Web App (PWA): Offline support and installable on mobile/desktop.
- Interactive Calendar: FullCalendar integration for event scheduling.
- Localization: Built-in i18n support.
- Modern UI: Responsive and accessible design powered by MUI v6.
- Framework: Next.js 15 (Pages Router)
- UI Library: MUI v6 + Emotion
- State Management: Redux Toolkit
- Authentication: NextAuth v4
- Permissions: CASL
- Database: PostgreSQL (via pg-promise)
- Forms & Validation: React Hook Form + Zod
- Node.js 18.x or higher
- PostgreSQL 14.x or higher
- yarn (recommended package manager)
-
Clone the repository
git clone https://github.com/NexEvent/citronics.git cd citronics -
Install dependencies
yarn install
-
Environment Setup Copy the example environment file and configure your variables:
cp .env.example .env.local
Make sure to update the database credentials and NextAuth secrets in your
.envfile. -
Database Setup Initialize your PostgreSQL database with the provided schema:
psql -U postgres -f schema.sql
-
Start the Development Server
yarn dev
Open http://localhost:3000 in your browser to see the application.
Detailed documentation for developers can be found in the docs/ directory:
- File Structure
- Database Setup & Patterns
- API Conventions
- Component Guidelines
- State Management
- Authentication & ACL
- PWA Setup
We welcome contributions from the community! Whether it's a bug fix, new feature, or documentation improvement, your help is appreciated.
Please read our Contributing Guidelines to get started.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'feat: add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Please also review our Code of Conduct before participating.
This project is licensed under the MIT License - see the LICENSE file for details.