From 918e8b020d7bca445cd95f9dbc3c90bd00d2831c Mon Sep 17 00:00:00 2001 From: Ishaan Date: Fri, 2 Jun 2023 22:49:15 -0400 Subject: [PATCH] feat: polished documentation Co-authored-by: mirajismail Co-authored-by: TheDannyG --- .gitignore | 1 + .pre-commit-config.yaml | 1 - citrus/vercel.json | 8 ++ doc/sprint0/README.md | 13 ++- doc/sprint0/product.md | 39 +++++--- doc/sprint0/product_backlog.md | 85 +++--------------- ...01 Team Contract.pdf => team_contract.pdf} | Bin 7 files changed, 59 insertions(+), 88 deletions(-) create mode 100644 citrus/vercel.json rename doc/sprint0/{C01 Team Contract.pdf => team_contract.pdf} (100%) diff --git a/.gitignore b/.gitignore index 5340cd8..d4ed1ee 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ citrus/.vercel # typescript citrus/*.tsbuildinfo citrus/next-env.d.ts +.vercel diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c87ec6b..20eef3a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,4 +9,3 @@ repos: - id: check-yaml - id: check-json - id: check-added-large-files - - id: pretty-format-json diff --git a/citrus/vercel.json b/citrus/vercel.json new file mode 100644 index 0000000..9b5fe13 --- /dev/null +++ b/citrus/vercel.json @@ -0,0 +1,8 @@ +{ + "git": { + "deploymentEnabled": { + "feedback": false + }, + "silent": true + } +} diff --git a/doc/sprint0/README.md b/doc/sprint0/README.md index 5cf5958..62f1527 100644 --- a/doc/sprint0/README.md +++ b/doc/sprint0/README.md @@ -1,5 +1,14 @@ +# Motivation +**What is it?** + +Citrus/GoGo is a next-generation experience-sharing platform that aims to connect like-minded people who would otherwise have missed out on experiences they didn't want to attend alone. + +**What problems does it solve?** + +Many businesses lose out on sales due to people not wanting to go alone, and many individuals miss out on a fun experience because they have no one to go with. Citrus/GoGo solves this problem by bringing strangers together through joint interest in events. + # Installation -Citrus has the following dependencies. +Clone the repository using Git. Citrus has the following additional dependencies: - [Next.js](https://nextjs.org/docs/getting-started/installation) - [A CockroachDB cluster](https://www.cockroachlabs.com/docs/cockroachcloud/quickstart.html) (has a free tier) @@ -16,7 +25,7 @@ After cloning the repository and installing the requirements, run the following cd citrus cp .env.template .env ``` -Populate the `.env` file with the relevant environment variables. Specifically, `DATABASE_URL` is required to run Citrus. +Populate the `.env` file with the relevant environment variables. Specifically, `DATABASE_URL`, a PostgreSQL connection string, is required to run Citrus. --- ## Running Citrus diff --git a/doc/sprint0/product.md b/doc/sprint0/product.md index 2c58c41..d20fb21 100644 --- a/doc/sprint0/product.md +++ b/doc/sprint0/product.md @@ -1,5 +1,9 @@ ### Q1: What are you planning to build? -We are planning to build an experience based, social meetup web application. Our aim is to connect individuals who are interested in specific events but lack companionship. +We are planning to build an experience-based, social meetup web application. Our application will focus on connecting individuals who share a common interest in specific events but may lack companions to attend them with. Whether it's a concert, a hiking trip, a cooking class, or a book club meeting, our goal is to bridge the gap between people who want to participate in these activities but find themselves without a group of friends to attend with. One of the biggest challenges in today's society is the feeling of loneliness, despite the interconnectedness provided by social media. We understand that attending events alone can be intimidating and sometimes even discouraging. That's why our application aims to eliminate these barriers by connecting like-minded individuals who are seeking friendship. + +Imagine an application where you can browse through a diverse range of events and activities. You can filter based on your interests, location, and availability. Once you find an event that piques your interest, you can join a virtual community of others who are also planning to attend. Through our application, you can connect with these individuals, chat, and get to know each other before the event even takes place. + +Not only does our application provide an opportunity to meet like-minded individuals, but it also enables you to expand your social circle and meet new people who share your passions. By fostering a sense of community, we hope to create an environment where users feel comfortable and excited to engage with others, building lasting connections beyond the initial meetup. ### Q2: Who are your target users? (2-3 personas) Persona 1 - Alice @@ -8,26 +12,39 @@ Alice is a 20 year old student, currently in her second year of university. She Persona 2 - Alex -Alex is a 38 year old baseball enthusiast living in the Bronx who recently bought two tickets to a game at Yankee Stadium for him and his friend, who's planning to fly over from Ohio. He works as a financial advisor in Scotiabank and has a wife and two kids, the latter of which he brings to baseball games on the weekends. Recently, he's received unfortunate news from his friend that his flight the day before has been delayed, so he won't be able to make it in time to watch the game. Alex is still planning to attend, but doesn't want the ticket to go to waste. +Alex is a 38 year old baseball fan living in the Bronx who recently bought two tickets to a game at Yankee Stadium for him and his friend, who's planning to fly over from Ohio. He works as a financial advisor in Scotiabank and has a wife and two kids, the latter of which he brings to baseball games on the weekends. Recently, he's received unfortunate news from his friend that his flight the day before has been delayed, so he won't be able to make it in time to watch the game. Alex is still planning to attend, but doesn't want the ticket to go to waste. Persona 3 - Carl Carl is a 17 year old student currently in their third year of high school. He's incredibly focused on getting admitted to the University of Waterloo for Computer Science, and has made it a goal to attend as many programming events as possible to put them on his application. One such event, Hack the North, has an application process that Carl was fortunate enough to get accepted through. While he's incredibly enthusiastic about attending, his high school is relatively smaller in size, and no one else from it applied or was accepted, leaving him without a group. ### Q3: Why would your users choose your product? What are they using today to solve their problem/need? -Let's consider a scenario where a user desires to attend a concert but hesitates to go alone. Our app will enable them to connect with like-minded users who have also experienced similar discouragement due to the absence of companions. By facilitating these connections, our app not only allows users to forge new friendships with shared interests but also benefits from the potential attendance of two individuals who might have otherwise opted out. -### Q4: What does "DONE" means to your Team? -We consider 'done' as the project owner being satisfied with the final result (i.e. all of the required user stories have been implemented and fully functioning). We also must be thorough with reviewing/testing our code to ensure consistency and stability, as well as make sure that the project meets the requirements of Scalability, Availability, Maintenance, and Portability (Non-Functional Requirements). Lastly, we want to ensure that we meet the requirements of the sprints/phases set out to us by this course. +There is a plethora of tools for users to find events they are interested in going to, such as TicketMaster and Eventbrite. The gap that Lime, or GoGo, seeks to bridge, would be for people matching the following criteria: + +- Those looking to organize their own informal meetups (such as study groups) with people they +have never met before, through a dedicated platform. +- Those who have found events on external platforms such as TicketMaster or Eventbrite they are interested in going to, but do not have a group to go with + +By setting up a dedicated platform for this niche, where users will understand exactly what experience they'll be getting and what they can expect from other users, Lime will bridge this gap. + +Current alternatives mostly consist of publicly broadcasting interest, through social media and then using messaging functionality on platforms such as Instagram to organize groups for these experiences. Of course, this typically precludes meeting new people for the vast majority of users who tend to have private profiles. Meetup.com is also another alternative, though it is used moreso to organize events than indicate interest in pre-existing events such as concerts, for example. + +### Q4: What does "DONE" mean to your Team? +We consider 'done' as the project owner being satisfied with the final result (i.e. all of the required user stories have been implemented and fully functioning) and have the code deployed. We also must be thorough with reviewing/testing our code to ensure consistency and stability, as well as make sure that the project meets the requirements of Scalability, Availability, Maintenance, and Portability (Non-Functional Requirements). Lastly, we want to ensure that we meet the requirements of the sprints/phases set out to us by this course. ### Highlights 1. Although we ended up choosing GoGo, there were certainly other alternatives we were considering, like Hype and Artillect. However, we went through all of the projects provided and narrowed our final decision down for the following reasons. - -In addition to allowing organizers to add events they wanted users to attend, we could collect events from bigger sites (e.g. TicketMaster) using their APIs and deliver those so the site isn't barren and populated with test events - -Very little storage overhead to deal with compared to Artillect, Hype & Ascend - they would be heavy on content delivery systems - -There are opportunities to work in monetization from the get-go (GoGo Premium or something of the sort) - -There are also opportunities for some kind of AI-based recommendation system + - In addition to allowing organizers to add events they wanted users to attend, we could collect events from bigger sites (e.g. TicketMaster) using their APIs and deliver a rich experience from the get-go + - Very little storage overhead to deal with compared to Artillect, Hype & Ascend - they would be heavy on content delivery systems + - There are opportunities to work in monetization from the get-go + - There are also opportunities for some kind of AI-based recommendation system + +2. We decided to split the team in half to work on front-end and back-end. The front-end team consists of Aaliyah, Sana, and Shinza, while the back-end team consists of Daniel, Ishaan, Matthew, and Miraj. Since those sub-groups were able to meet and converse more frequently together, we thought that it would allow the project's development to thrive if both ends could discuss with one another aside from our team meetings. + +3. We decided on using Next.js as the core framework our application was based on, since it can handle full stack development and has multiple handy features, such as Server Side Rendering and API routes. We paired this with CockroachDB for our database for its generous free tier. We are using Vercel for deployment, as they developed Next.js and have a good free plan. -2. We decided to split the team in half to work on Front-End and Back-End. The front-end team, currently working on Figma consists of Aaliyah, Sana, and Shinza, while the back-end team consists of Daniel, Ishaan, Matthew, and Miraj, who are currently working with Next.js and SQL. Since those sub-groups were able to meet and converse more frequently together, we thought that it would allow the project's development to thrive if both ends could discuss with one another aside from our team meetings. +4. For our collaboration tools, we are using Slack for daily standups and main communication channel, Jira for our roadmap and sprint details, and Notion for documentaion. We are using Figma for mockups and artefacts. Finally, we are occasionally using Microsoft Live Share for VS Code to collaborate on the same parts of code. -3. Our decision was to hold team meetings once a week on Wednesday at 3:00 PM. It was a reasonable time where everyone could meet up at the campus without interfering with anyone's schedule, as well as allowing us to discuss what we had done the days prior to the meeting before sharing what our plans were for the days to come in the week. The format of our meetings would have both front-end and back-end catch the other up on what they had been up to, before discussing team-relevant problems (such as Q4 of product.md). Afterwards, we would brief each other on what we planned to work on leading up to the next meeting. +5. Our decision was to hold team meetings once a week on Wednesday at 3:00 PM. It was a reasonable time where everyone could meet up at the campus without interfering with anyone's schedule, as well as allowing us to discuss what we had done the days prior to the meeting before sharing what our plans were for the days to come in the week. The format of our meetings would have both front-end and back-end catch the other up on what they had been up to, before discussing team-relevant problems (such as Q4 of product.md). Afterwards, we would brief each other on what we planned to work on leading up to the next meeting. diff --git a/doc/sprint0/product_backlog.md b/doc/sprint0/product_backlog.md index b3be081..6ffc28e 100644 --- a/doc/sprint0/product_backlog.md +++ b/doc/sprint0/product_backlog.md @@ -4,96 +4,33 @@ Working with the information provided by the LIME Founder, alongside the project All user stories have been documented in JIRA in preparation for Sprint 1. - - **What Users May Want to Do** - - - -- As a new user, I would like to create an account with my email to access the LIME website. - - -- As a new user, I would like to connect my existing Google/Facebook/etc. account to access LIME. - - +- As a new user, I would like to create an account with my email so I can access the LIME website. +- As a new user, I would like to connect my existing Google/Facebook/etc. account so I can access LIME. - As a user, I would like to look through all the events available on the website so I can decide which ones I am interested in. - - - As a user, I would like to view a specific event so that I can understand all the details of the event. - - As a user, I want to see the current attendees of an event so I can see who I can ask to join me. - - - As a user, I would like to view the profiles of other users so I can connect with them. - - - As a user, I want to create a profile to display my interests to other users. - - - As a user, I would like to search for an event happening on a specific date or within a date range so I can book it in advance. - - - As a user, I would like to filter events by location so I can narrow my searches down to the events near me. - - - As a user, I would like to view other users’ profiles to gauge their interests and find commonalities. - - - As a user, I would like to connect with friends/followers so that we can plan events together. - - - As a user, I would like to create a group that hosts the people I am attending the event with so we can coordinate in advance. - - - As a user, I would like to indicate that I have prepaid for tickets so that other users know that they can join me for no cost. - - - As a user, I would like to add payment methods and review existing payment methods so I can keep track of how I am purchasing tickets. - - - As a user, I would like to report a user that might have intentions of malice to keep myself and other users safe on the platform. - - - As a user, I would like to cancel an event that I can no longer attend so the event planners can open up more spots. - - - As a user, I would like to look at the list of events I have registered for so I can add them to my personal calendar. - - -- As a user, I would like to view an individual ticket event so I can print it out in advance. - - +- As a user, I would like to view an individual ticket for the event so I can print it out in advance. - As a user, I want to be able to contact the application developers so that I can resolve any issues. - - As a user, I want to be able to contact other users so I can message them about events together - -**What Businesses May Want to Do:** - - - -- As a business, I would like to add an event to the website so people can book tickets for this event. - - - -- As a business, I would like to offer deals to frequent customers to encourage them to return in the future. - - - -- As a business, I would like to edit an event to update relevant information. - - - -- As a business, I would like to upload pictures to showcase the event venue and what users can expect. - - - -- As a business, I would like to send the users attending an event relevant updates and notifications regarding the event. - - - -- As a business, I would like to see the users who have bought tickets for my event so I can allocate resources accordingly. - - - -- As a business, I would like to cancel an event so that users are no longer registered to attend. +**What Organizers May Want to Do:** +- As an organizer, I would like to add an event to the website so people can book tickets for this event. +- As an organizer, I would like to offer deals to frequent customers so I encourage them to return in the future. +- As an organizer, I would like to edit an event to update relevant information so events are always up-to-date. +- As an organizer, I would like to upload pictures to showcase the event venue and what users can expect. +- As an organizer, I would like to send the users attending an event relevant updates and notifications regarding the event. +- As an organizer, I would like to see the users who have bought tickets for my event so I can allocate resources accordingly. +- As an organizer, I would like to cancel an event so that users are no longer registered to attend. diff --git a/doc/sprint0/C01 Team Contract.pdf b/doc/sprint0/team_contract.pdf similarity index 100% rename from doc/sprint0/C01 Team Contract.pdf rename to doc/sprint0/team_contract.pdf