PetitionU
A place for students to propose changes at their school and bring classmates together around them.
- React
- TypeScript
- Elixir
- Phoenix
- PostgreSQL

From an idea to a shared request
Students can browse and create petitions, add signatures, join the discussion, and follow updates. A personal dashboard brings together the petitions they have started and supported, so participation continues beyond the initial signature.
Organize within a classroom
Classrooms give smaller groups their own space for petitions. Professors can create a classroom and share its join code, while membership controls who can participate. Classroom settings determine whether students can start petitions, keeping the workflow suited to the group using it.
Connect the interface to the rules
React and TypeScript provide the interface, with Phoenix serving the application and PostgreSQL storing its data. Ash resources define actions, validations, and access policies. Generated TypeScript RPC clients connect those actions to the frontend, while TanStack Query manages server data in the browser.