Townsourced
Startup / Website
Description
Townsourced is a locally moderated community bulletin board, built to help communities discover events, share, shop and sell locally.
Problems to solve
- Craigslist
- Too broad, not available to small communties
- Unmoderated and overrun with SPAM
- Facebook pages
- Are unsearchable
- Hard to moderate
- Buying and selling online is unsafe
- Requires sharing personal information
- Cash-only transactions with strangers
Our Solution
Townsourced allows for communities of any size to create a space for buying and selling, sharing events, job postings, and volunteer opportunities.
Towns are easily moderated with auto-moderation tools, and users can post once simultaneously to all of their communities.
Buying and selling can be coordinated through built-in messaging, and users have the option of completing these transactions electronically so they don’t have to worry about carrying cash to a meetup with a stranger.
Technical Goals
- Front-end
- Simple and intuitive
- Responsive and scalable to screens of all sizes
- Back-end
- Horizontally Scalable with low effort
- Flexible REST API for future mobile development
Technical Overview
Townsourced was built to be horizontally scalable from the beginning. Whether it’s serving 100 users or a million, the architecture will look the same. To accomplish this, we made sure to use technologies that could easily shard and scale as needed at every layer.
The first of those layers are a load-balanced set of web servers written in Go that provide state management and coordination between the other layers, such as using consistent hashing to balance keys across multiple memcached servers.
The single source of truth in Townsourced is a cluster of RethinkDB databases. We went with RethinkDB because it is horizontally scalable while still allowing for advanced operations like joins and location queries, all while maintaining data integrity. Full-text searching is provided by an Elasticsearch cluster, whose consistency is ensured by verifying its content with the RethinkDB layer.
Get in touch