DESCRIPTION
A project management system for the Ball State Digital Corps that can make slack channels, clickup projects and sync data between services.
CHALLENGES
- The Project Form
- External Applications Integrations
- Frontend Caching
- Corps API
DEVELOPMENT
Project Form

The design required a ton of information to be collected on one page to create/edit a project. I developed a fully plug and play style form builder using react components synced up to our form context.

These generic components can be used in any project form allowing new form fields to be added as needed.
These components are also fully synced with a complex Zod Validator that formats errors to the correct section by extending the Zod libary with defining error sections on the client side validator

External Applications Integrations
When projects were made or updated through DCHQ we want to sync the data between services. i.e. I add a student to a project on DCHQ then they are added to the slack channel automatically.
Overtime we needed more and more external integrations and it was a challenge to manage all of that through our API interracting with external systems in the backend codebase.
I researched Zapier and used it to make automations and integrations between systems. We needed an event based system to emmit Corps API events to Zapier to begin automation workflows to sync data between several services such as Slack, ClickUp, Github, and Outlook.
Frontend Caching
DCHQ is taking in a lot of data from the corps api and we wanted to improve our frontend experience by caching that data by using React Query.
We use react query for every call in DCHQ which makes it significantly faster and reduces fetching time.
Corps API
The Corps API needed to be a bit more than an API just for DCHQ. Its the one source of knowledge for our Corps internal data.
The Corps API keeps track of all corps project history and all employees who are currently employed or not and is being used by several internal Corps projects outside of DCHQ.
It's architecture is split between a basic REST polling API and a REST Hook API to let external systems "subscribe" to certain events to be notified of changes when they happen.