Skip to content
Snippets Groups Projects
Commit 571cf626 authored by Teal Bauer's avatar Teal Bauer
Browse files

Update README

Removed outdated information, added new features, normalized spelling,
parent 520af4e7
No related branches found
No related tags found
1 merge request!39Update README
# C3Lingo rescheduled
# c3lingo re:scheduled
> Rapid assignment of shifts for chaos events
......@@ -7,7 +7,7 @@
### Features
- **Automatic schedule import** for re:publica, Pretalx/Hub
- **Integrations** with [C3Lingo Filedrop](https://github.com/c3lingo/c3t-drop), [Engelsystem](https://github.com/engelsystem/engelsystem) and more
- **Integrations** with [c3lingo Filedrop](https://github.com/c3lingo/c3t-drop), [Engelsystem](https://github.com/engelsystem/engelsystem) and more
- **Collaborate live** on session changes using websockets
- **One-click assignment** of angels
- **Express interest** (with optional note) for sessions
......@@ -19,6 +19,9 @@
- **Manage source and target languages** per angel and per session
- **Dark mode** and (mostly) responsive web app
- **Statistics and leaderboards**
- **Role-based access control** with flexible permissions
- **Admin interface** for managing users, roles, and conferences
- **Import history** with error tracking for conference data
- ... and more 🎁
### Technologies:
......@@ -26,13 +29,15 @@
- [Ruby on Rails](https://rubyonrails.org/) with [SQLite](https://sqlite.org/) DB
- [Tailwind CSS](https://tailwindcss.com/)
- [Turbo](https://turbo.hotwired.dev/) + [Stimulus](https://stimulus.hotwired.dev/)
- [ActionCables](https://guides.rubyonrails.org/action_cable_overview.html) with [Redis](https://redis.io/) backend
- [ActionCable](https://guides.rubyonrails.org/action_cable_overview.html) with [Redis](https://redis.io/) backend
- [Devise](https://github.com/heartcombo/devise) for authentication
- [SolidQueue](https://github.com/rails/solid_queue) for background jobs
## Dev environment
The project comes with a devcontainer for VSCode and compatible editors. Simply open the project folder in Code (or using `devcontainer open <path>`) and after a few seconds, a suitable container should be ready.
Run `bin/dev` in the integrated terminal to start the dev webserver and the tailwind watch job (see `Procfile.dev` for details). Access your local rescheduled at http://127.0.0.1:3000.
Run `bin/dev` in the integrated terminal to start the dev webserver and the tailwind watch job (see `Procfile.dev` for details). Access your local re:scheduled at http://127.0.0.1:3000.
## Secrets
......@@ -46,25 +51,79 @@ The application requires some secrets, as of writing these include:
You can supply the secrets by running `rails credentials:edit` or pass them as environment variable in upper case (e.g. `FILEDROP_USER`).
## Preparation for an event
## User and Role Management
tbd.
The application uses a role-based access control system with the following main roles:
- `admin`: Full system access
- `events_admin`: Can manage conferences and related resources
- `shift_coordinator`: Can manage session assignments
- talks about seeds
- set "relevant stages"
~~~ruby
relevant = ["Saal 1", "Saal ZIGZAG", "Saal GLITCH", "Stage HUFF", "Stage YELL", "Canceled talk"]
conf=Conference.find_by(slug: "38c3")
conf.relevant_stages=conf.stages.select { |val| relevant.include?(val[:name]) }
~~~
- sort stages
~~~ruby
### Managing Roles through the Admin UI
Roles can be managed through the admin interface:
1. Navigate to `/admin/roles` to view all available roles
2. Click on a role to edit its permissions
3. To assign roles to users, navigate to `/admin/users` and edit the user
### Managing Roles with Rake Tasks
You can also use the following rake tasks to manage user roles from the command line:
```bash
# View all users with special roles
rake admin:list
# List all events admin users
rake admin:list_events_admins
# Assign roles
rake admin:make_admin[user@example.com]
rake admin:make_events_admin[user@example.com]
rake admin:make_shift_coordinator[user@example.com]
# Remove roles
rake admin:remove_admin[user@example.com]
rake admin:remove_events_admin[user@example.com]
rake admin:remove_shift_coordinator[user@example.com]
```
## Conference Management
### Adding a New Conference
Conferences can be added through the admin interface:
1. Navigate to `/admin/conferences`
2. Click on "Add New Conference"
3. Fill in the basic information (name, slug, dates, time zone)
4. Select the appropriate import job class (e.g., Pretalx, re:publica)
5. Provide the required data fields for the selected import method
6. Save the conference to initiate the data import
### Importing and Updating Conference Data
Conference data can be imported and updated through the admin interface:
1. Navigate to the conference details page in admin
2. Click on "Run Import Again" to start a new import
3. The import process runs in the background with real-time progress tracking
4. View the import history to see past imports and any errors
### Setting Relevant Stages
The admin interface provides a dedicated page for managing which stages are relevant:
1. Navigate to the conference details page in admin
2. Click on "Manage Relevant Stages"
3. Check the boxes for stages that should be considered relevant
4. Save your selection
### Prioritizing Stages
You can set the display order of stages through stage weights. Higher weights push stages down in the listing order:
```ruby
Stage.where(name: "Saal 1").update(weight: 10)
Stage.where(name: "Saal GLITCH").update(weight: 20)
Stage.where(name: "Saal ZIGZAG").update(weight: 30)
Stage.where(name: "Stage HUFF").update(weight: 40)
Stage.where(name: "Stage YELL").update(weight: 50)
~~~
```
## In production
......@@ -100,16 +159,6 @@ By running `bin/rails <command>` you can trigger some helpful actions, such as
### In `rails console`
- Manually trigger sync job
~~~ruby
FetchConferenceDataJob.perform_now("38c3")
~~~
- Promote user to shiftcoordinator
~~~ruby
User.find_by(name:"username_here").update(shiftcoordinator: true)
~~~
- Reset user password
~~~ruby
pw = SecureRandom.alphanumeric(12)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment