A platform to take the hassle out of going out.
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
Life gets busy. Making time and decisions to recreate is not a trivial task for a variety of reasons. Most of us have busy schedules and exhausting occupations. Who has time or energy to plan and organize events -- and do so without creating conflicts?
Gather is a full stack web application that is designed to make connecting with friends, family, coworkers as stress-free and simple as possible. The goal of our application is to motivate users to connect with each other and live their best lives, without the hassle of hashing out all of the details.
Gather has a simple user interface that makes it approachable and easy to use. After registering an account, users can create and join groups that facilitate streamlined event management. Gather supports two main classes of event suggestions: custom suggestions, created by users, and interest-driven system generated suggestions. Users can suggest custom events to be pushed to one or more of their group members' feed. Similarly, user- and group-tailored events are suggested by our internal algorithms based on prior event selection and calendar analysis. Potential generative suggestions are updated on a biweekly basis based on event data that is scraped from the web. After an event is suggested, an event enters the suggestion stage. At this point, an event component displays the extent to which their group mates have indicated interest in the event. After a unanimous vote, the event enters the scheduling phase (if there is not a predetermined time). Then, users indicate a generic block (morning, afternoon, evening) in which they'd like the event to take place. Our system will process this data and repoll users to reconcile any potential conflicts. If conflicts are unable to be resolved or group interest is not unanimous, the event will revert back to the suggestion stage in a deprioritized state.
Note that Gather was initially conceived as part of the SparkHacks '24 hackathon. We intend on maintaining and extending upon this project afterwards.
Gather is a state-of-the-art full-stack web application. We built the Gather backend on Hono, a ultrafast web framework that leverages the power of Cloudflare Workers. The Gather frontend is built on Nuxt, a JavaScript framework that is tightly integrated with Vue and supports advanced routing capabilities.
Get started using the documentation below for each respective stack.
Clone the project (using https, ssh, or Github CLI). For example, using ssh:
git clone git@github.com:radicalplatforms/gather.git
Navigate to the hono directory and install backend dependencies using npm
:
cd gather/hono
npm i
In order to run the backend, you'll need to get your Cloudflare D1 database setup locally (unless you have creds to access the remote D1 db). To migrate/setup your local db, run the following and accept the prompts:
npm run wrdev-migrate-local
NOTE: You'll also have to run this command each time a migration file is added to the backend database.
To run the project locally using miniflare
(a local, simplified version of Cloudflare Workers), run the following:
npm run wrdev
You should now be able to interface with the backend! Check out the wrangler docs for additional information on how to view/manipulate the D1 database.
Accessing the remote D1 database requires special admin credentials that can be provided by @rak3rman, the repo owner. Only individuals responsible for deployment-related activites will be given creds, as the entire backend can be simulated locally with miniflare. If you have such creds, what follows are additional commands that you can run:
wrangler login // logs you into Cloudflare, you may have to run
// `npm i -g wrangler` to install wrangler globally
npm run wrstage // deploys the current local build to the stage environment
npm run wrprod // deploys the current local build to the production environment
npm run wrdev-migrate // migrates the local and remote development databases
npm run wrdev-migrate-remote // ONLY migrates the remote development database
npm run wrstage-migrate // migrates the remote stage database
npm run wrprod-migrate // migrates the remote production database
In npm run wrdev
, you can also access/manipulate the remote database instance by pressing l
.
Be careful when manipulating and migrating the remote database instance — reserve this for when your local db isn't working properly or you'd like to share a database with others who also have creds.
Be particularly careful with the wrstage*
and wrprod*
commands, they are potentially destructive actions and will not ask you to confirm your deployment/migration changes.
On this same token, consider the dev remote database instance volatile, and the stage and production instances stable.
Navigate to the nuxt directory and install backend dependencies using npm
:
cd gather/hono
npm i
To start a development server, run npm run dev
.
To deploy to Cloudflare Workers in a development context, run npm run wrdev
. Similarly, to deploy to production, run npm run wrpub
.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the Apache License. See LICENSE.txt
for more information.