This is an explanation of how the files in the codebase are (intended to) be laid out.
/contains the typical mess of configuration files and documentation./publiccontains static assets for the website/contentscontains wiki markdown (contents/markdown/) and wiki media (contents/media/); see WIKI_MEDIA.md/.githubcontains theyamlfiles which define our CI/CD pipeline on GitHub Actions/docscontains documentation files (like this one!)/srccontains all of the source code! Let's dig into it:/src/apicontains client API code for querying the Toronto city council API. Needs a better name./src/appcontains the Nextapprouter, i.e. all the pages of the website.src/backendcontains code that is specifically meant to run on a server. so, logic for SSR pages, Route Handlers, or Server Actionssrc/componentscontains all of our UI components. we try to keep pages themselves lean, mainly just to connect some data to a component. So you might find e.g. theAgendaItemListcomponent which is basically an entire page of the app defined here.src/components/uiis specifically for components that are just concerned with UI/UX (styling/interaction) and not the underlying data model. e.g., a button. or a navigation bar. components generated byshadcn/uiends up in this folder (in fact I think that is the source of all of the code in that folder)
src/constants: what it says on the tin.src/contextscontains our React contexts.src/database: what it says on the tin.src/hookscontains our custom React hooks.src/logiccontains business logic: code that is neither concerned with the client, the server, nor the database! just wranglin' some data modelssrc/migrationscontains our database migrationssrc/scriptscontains code that is meant to be run in cron jobs or by developers. Currently this is code to update the database.