Currently Project Elara uses a complicated spreadsheet to keep track of our team, as well as a Google form for new members. This method is, understandably, a terrible and non-scalable solution. It would be useful to develop a custom (web)app that can replace the spreadsheet. In particular the following would be desirable features:
- It should have an interface for anyone to submit the new member application (to replace the Google form), and should automatically create a new prospective member based on the submission
- Admins can manually upgrade the prospective member into an active member, upgrade a member who has signed the Charter from an associate to full member, set a member as inactive, set a member as a past member, or (in the case of disciplinary measures) mark if a member has been quarantined or expelled
- It should have a searchable spreadsheet-style view (perhaps via GridJS or DataTables) with sortable and filterable columns, and an editor for member information
- This information should include at least the current columns in the spreadsheet, as well as other useful fields. This includes:
- Member name
- Preferred pronouns
- Contact email (and possibly contact number)
- If they are RPI students; if so, their major and graduation year, and their RPI student ID
- Whether they are in RCOS, and if so, which semester(s)
- Discord account username, if applicable
- GitHub account username, if applicable
- Codeberg account username, if applicable
- Which Elara division/team they are in (research, software/web development, embedded, build, etc.)
- Specialization (what they are working on in the project)
- When they joined Project Elara
- If they have completed the mandatory Elara onboarding tasks (this can have an expanded view with a progress bar, showing how many of the required onboarding tasks they have completed)
- Link to their member application on the google form
- Whether they want to be listed on the Project Elara website; if so, whether they have been added yet
- Additional notes
- Moreover, it should be able to submit attendance; members can just scan a QR code and then enter in their name (which should have autocomplete to avoid them needing to type their full name every time), as well as the ability to store their name for 30 days
- A manual submission can also be used for attendance, with member name autocomplete as well
- Team analytics, including graphs of the number of members over time, number of new members joining over time, and pie/bar charts to e.g. compare how many people are each Elara division/team
- It should be able to export and import CSV data for the members; this will make it much easier to import the current data we have in the spreadsheet
- It should use security best practices to avoid our member data from being compromised
Ideally the frontend should be written in Typescript. The backend is TBD but I'd prefer some Python web framework (Django?) since the language is used ubiquitously, albeit with strict typing (via ty) to avoid errors as much as possible. In addition, the app should be MIT licensed (imo).
Discussion on whether such an app would be useful & worth making is welcome.
Currently Project Elara uses a complicated spreadsheet to keep track of our team, as well as a [Google form](https://forms.gle/jCZhL1ewdL7jnfjK8) for new members. This method is, understandably, a terrible and non-scalable solution. It would be useful to develop a custom (web)app that can replace the spreadsheet. In particular the following would be desirable features:
- It should have an interface for anyone to submit the new member application (to replace the Google form), and should automatically create a new prospective member based on the submission
- Admins can manually upgrade the prospective member into an active member, upgrade a member who has signed the Charter from an associate to full member, set a member as inactive, set a member as a past member, or (in the case of disciplinary measures) mark if a member has been quarantined or expelled
- It should have a _searchable_ spreadsheet-style view (perhaps via [GridJS](https://gridjs.io/) or [DataTables](https://datatables.net/)) with sortable and filterable columns, and an editor for member information
- This information should include _at least_ the current columns in the spreadsheet, as well as other useful fields. This includes:
- Member name
- Preferred pronouns
- Contact email (and possibly contact number)
- If they are RPI students; if so, their major and graduation year, and their RPI student ID
- Whether they are in RCOS, and if so, which semester(s)
- Discord account username, if applicable
- GitHub account username, if applicable
- Codeberg account username, if applicable
- Which Elara division/team they are in (research, software/web development, embedded, build, etc.)
- Specialization (what they are working on in the project)
- When they joined Project Elara
- If they have completed the [mandatory Elara onboarding tasks](https://handbook.elaraproject.org/basics/about/quickstart-guide/) (this can have an expanded view with a progress bar, showing how many of the required onboarding tasks they have completed)
- Link to their member application on the google form
- Whether they want to be listed on the Project Elara website; if so, whether they have [been added yet](https://codeberg.org/elaraproject/website/issues/21)
- Additional notes
- Moreover, it should be able to submit attendance; members can just scan a QR code and then enter in their name (which should have autocomplete to avoid them needing to type their full name every time), as well as the ability to store their name for 30 days
- A manual submission can also be used for attendance, with member name autocomplete as well
- Team analytics, including graphs of the number of members over time, number of new members joining over time, and pie/bar charts to e.g. compare how many people are each Elara division/team
- It should be able to export and import CSV data for the members; this will make it much easier to import the current data we have in the spreadsheet
- It should use security best practices to avoid our member data from being compromised
Ideally the frontend should be written in Typescript. The backend is TBD but I'd prefer some Python web framework (Django?) since the language is used ubiquitously, albeit with strict typing (via [ty](https://docs.astral.sh/ty/)) to avoid errors as much as possible. In addition, the app should be MIT licensed (imo).
Discussion on whether such an app would be useful & worth making is welcome.