DevRound is a comprehensive event management platform for organizing coding events and programming workshops. It provides real-time collaboration features, intelligent team formation, and live presentation capabilities.
- Multi-session Events: Create events with multiple coding sessions
- Programming Languages: Support for multiple languages (Python, Elixir, C++, Fortran, Julia, etc.)
- Registration System: Self-service registration with deadline enforcement
- Hybrid Support: Separate handling for remote and in-person attendees
- Live Presentations: PDF slide viewer with remote control capabilities
- LDAP Authentication: Support for enterprise authentication via LDAP
- Automated Pairing: Algorithm-driven team generation based on:
- Experience level balancing (stratified pairing)
- Shared programming language preferences
- Remote vs. in-person status
- Check-in Management: Attendee verification before team formation
- Check in attendees on arrival
- Check out attendees if they need to leave early
- Live Updates: Real-time updates across all views
- Remote Slide Control: Hosts control presentation slides for all attendees
- Session Management: Start, stop, and reset event sessions dynamically
- Registration Notifications: Instant updates when users register or modify attendance
- Admin Panel: CRUD operations for all resources
- Event Duplication: Clone events to save time
- User Management: Manage hosts and attendees
- Elixir 1.14 or later
- Node.js (for asset compilation)
- PostgreSQL database (or Podman to run it in a container)
- OpenLDAP server (or Podman to run it in a container)
- Clone the repository
git clone git@github.com:sebasgo/dev_round.git
cd dev_round-
Start PostgreSQL database
Option A: Using Podman (recommended for development)
./contrib/run-posgres-podman
This script will:
- Create a PostgreSQL 17 container with proper user mappings
- Expose PostgreSQL on port 5432
- Store data persistently in
~/.local/share/postgreson the host system - Configure default credentials (user:
postgres, password:postgres)
Option B: Use your local PostgreSQL installation
- Ensure PostgreSQL is running
- Update
config/dev.exswith your database credentials if needed
-
Start OpenLDAP server
Option A: Using Podman (recommended for development)
./contrib/run-openldap-podman
This script will:
- Create an OpenLDAP container with proper user mappings
- Expose LDAP on ports 5389 (LDAP) and 5636 (LDAPS)
- Configure default organization ("Development Corp") and domain (dev.local)
- Set up initial users and groups for testing
Option B: Use your local OpenLDAP installation
- Ensure OpenLDAP is running
- Configure appropriate LDAP settings in your environment
-
Install dependencies and setup database:
mix setupThis will:
- Install Elixir dependencies
- Create and migrate the database
- Run database seeds
- Install and build frontend assets
- Start the Phoenix server:
mix phx.serverOr start it inside IEx:
iex -S mix phx.server- Visit
http://localhost:4000in your browser
The containerized LDAP instance is pre-populated with the following user accounts which can be used to log in. For all accounts, the user name and the password are identical.
| Full Name | UID / Password | Role |
|---|---|---|
| John Doe | jdoe | Admin |
| Alice Smith | asmith | User |
| Bob Wilson | bwilson | User |
| Carol Johnson | cjohnson | User |
| David Lee | dlee | User |
| Elena Martinez | emartinez | User |
| Frank Garcia | fgarcia | User |
| Grace Davis | gdavis | User |
| Henry Brown | hbrown | User |
| Isabel Thompson | ithompson | User |
| James White | jwhite | User |
| Kate Harris | kharris | User |
| Lucas Martin | lmartin | User |
| Maria Clark | mclark | User |
| Nathan Lewis | nlewis | User |
| Olivia Walker | owalker | User |
| Peter Hall | phall | User |
| Quinn Allen | qallen | User |
| Rachel Young | ryoung | User |
| Samuel King | sking | User |
| Taylor Wright | twright | User |
| Uma Lopez | ulopez | User |
| Victor Hill | vhill | User |
| Wendy Scott | wscott | User |
| Xavier Green | xgreen | User |
| Yara Adams | yadams | User |
| Zachary Baker | zbaker | User |
| Amanda Nelson | anelson | User |
| Brandon Carter | bcarter | User |
| Christina Mitchell | cmitchell | User |
| Daniel Perez | dperez | User |
| Emma Roberts | eroberts |
-
Create an Event:
- Log in to the admin panel at
/admin - Create a new event with title, dates, location, and description
- Add one or more sessions within the event timeframe
- Select programming languages and assign hosts
- Upload presentation slides (optional)
- Set registration deadline and publish
- Log in to the admin panel at
-
Host an Event:
- Navigate to the event hosting lobby
- Check in attendees as they arrive
- Review any constraint validation messages
- Generate balanced teams (algorithm pairs by experience and languages)
- Start the live presentation from the lecture view
- Start sessions to reveal teams to attendees
- Switch between lecture and session views as needed
-
Register for an Event:
- Browse events at
/events - View event details
- Register before the deadline with:
- Programming language preferences
- Remote or in-person attendance preference
- Edit your registration anytime before the deadline
- Browse events at
-
Follow an Event:
- View live presentations at
/events/:slug/live - See your team assignment when sessions start
- View live presentations at
mix testmix precommitThis runs compilation, formatting, and tests to ensure code quality.
- Framework: Phoenix 1.8 with LiveView 1.1
- Database: PostgreSQL with Ecto
- Admin: Backpex 0.16
- Frontend: Tailwind CSS v4, daisyUI v5, Heroicons
For detailed technical documentation, architecture details, and development guidelines, see AGENTS.md.
- Phoenix Framework: https://www.phoenixframework.org/
- Phoenix LiveView: https://hexdocs.pm/phoenix_live_view/
- Backpex: https://backpex.live/
Licensed under the terms and conditions of the GPL-3.0 license, see LICENSE for details.