In October 2022, Nick Sementelli shared a concept that he and Alex Baca had conceived for experimenting with city council committees. This was a follow-on from our previous project for exploring neighborhood representatives and their stances on various policies.
We developed a “Fantasy Council” game. Anyone can design their own Committees, choosing a Chair, members and government agencies. You can start with the existing council (sans former Council members) or a blank council. The one requirement is the “Committee of the Whole” with the Council Chair-person as the Chair of this committee.
As an added bonus – the game is configurable and could easily be re-used by other municipalities or groups to explore organizational assignments.
The UI is strongly inspired by other “task boards” like Trello and Github projects. Users can drag + drop agencies or members between committees, rename committees, and name their council.
You can save your council for sharing via Email or post to social media site. There is also a simple “treemap” budget visualization that clearly shows the relative financial oversight of each committee chair.
We have a lot more ideas for improvements if we continue with the project. For example,
- Sharing a Council to social media includes a thumbnail summary image
- List of shared councils and a leaderboard for voting + commenting
- More accessible controls for moving members and agencies
How it was Built
Like the previous council project, this project is open-source code and was built with Web Components so that it can be embedded within a content management system like GGWash. The project was designed to be re-usable for other councils by loading all data from Spreadsheets including Members, Agencies, and existing Committee composition. It would be easy to re-use this project for any municipality.
For saving + sharing committees this project also required a database and API. I tried to store the entire committee state in the URL but the length exceeded social media sharing limits and looked complicated in emails. The database also allows for future leaderboards and discussions.
The project was fun to explore modern drag and drop in HTML. It has advanced significantly and mostly works except for complex state logic. I also tried three different IaaS cloud hosting providers to automate the API – which was surprisingly difficult. Digital Ocean was easy to start, but lacked documentation, Azure is complex, and finally Amazon AWS worked well though has significant security settings that need configuration to connect the Lambda API and the database.