PetitionU

A place for students to propose changes at their school and bring classmates together around them.

  • React
  • TypeScript
  • Elixir
  • Phoenix
  • PostgreSQL
View on GitHub
PetitionU dashboard for a sample student, with petitions started and signed, classroom membership, and prompts to create a first petition.
The personal dashboard, shown with a sample student account. Select the image to view it full size.

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.