The Kane Creek development generated thousands of public survey responses from Grand County residents, but the raw data was effectively inaccessible, buried in a format that made it impossible to search or browse. I built this app to make that data usable: a full-stack web application where anyone can read, search, and paginate through the responses.
The backend is a RESTful API built with Node.js and Express, backed by a PostgreSQL database managed through Knex. The frontend is a React + TypeScript application with responsive SCSS layouts. The whole thing is self-hosted on my own VPS: the API runs bound to loopback with nginx terminating TLS and reverse-proxying to it, and the React frontend is served same-origin.
What I did
- Built a RESTful API with Node.js and Express, handling database interactions with PostgreSQL via Knex
- Managed application state and async data flow using React hooks
- Implemented search and pagination across thousands of records
- Built a responsive UI with SCSS for various screen sizes
- Debugged data inconsistencies and API response issues
- Self-hosted the API and frontend on my own VPS behind nginx (TLS termination and reverse proxy)