GithubHelp home page GithubHelp logo

demir-delic / here2there Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 0.0 4.49 MB

Get travel recommendations based on your preferences.

Home Page: https://here2there.herokuapp.com/

License: MIT License

Shell 0.67% JavaScript 55.57% HTML 3.28% CSS 1.29% Python 39.18%
django postgresql react

here2there's People

Contributors

che-vee avatar demir-delic avatar jdmedlock avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

here2there's Issues

Close modal upon button click

Task Description
Add functionality to buttons within change city modal

Technical Considerations
When the buttons are clicked, instead of opening a dialog, the modal should be closed.

Mapping API Routes

Task Description
Determine initial API routes and how they map to the database.

Technical Considerations
Include any technical considerations including architecture (e.g. API), required libraries, etc.

Additional Considerations
Any supplemental information including unresolved questions, links to external resources, screenshots, etc.

Frontend

Feature Description
The client side of the application. Handles user interaction and displays data from the backend.

Major User Stories/tasks

  • Create basic frontend project structure
  • Detect a user's location
  • Suggest the nearest city supported by Teleport and select it by default
  • Allow the user to change their city
  • Allow the user to select their preferences and search for recommended cities
  • Display recommended cities using data from backend
  • Add autocomplete textfield component

Additional Considerations
Wireframe: https://drive.google.com/drive/folders/1XKymuXnVBwgESYGmovMTgGDThZPQL-dS

📋 Create a Project Backlog

Task Description

  • Watch the How to Create a Project Backlog video
    video link
  • Identify & prioritize features
  • Create an epic for each feature
  • Choose the highest priority epics & divide them into user stories
  • Add your epics & user stories to a backlog tool. Due to it’s tight integration with GitHub we suggest using ZenHub (it’s free for teams using public repositories)
  • Prioritize the user stories

Technical Considerations
N/a

Additional Considerations
During the Voyage you’ll refine the Project Backlog and in every Sprint you’ll move tasks from it to the Sprint Backlog. This is part of the Agile process helps you and your team concentrate only on the tasks that must be completed in that Sprint.

Detect and display user location

User Story
As an app user
I want the supported city closest to me to be selected when I open the app
So I can quickly adjust my preferences and search without having to first select a city.

Acceptance Criteria

  • When the app is opened, the nearest city in the database is displayed to the user
  • The nearest city is chosen based on comparing the user's IP address (or exact location, if permission is granted) to the latitude/longitude of supported cities
  • There is some state in React (e.g. useState hook) that keeps track of a user's location

Flow

  1. App is opened
  2. IP address is found automatically
  3. Exact location is requested via Geolocation browser API
  4. IP address is converted to latitude/longitude
  5. Latitude/longitude is compared to latitude/longitude of cities in database
  6. Closest city and country are returned by API and displayed
  7. If exact location is granted, it's converted to latitude/longitude and steps 4 and 5 are repeated

** _Note**
Flows numbers 5 and 6 will be implemented when the backend/API is complete.
Acceptance criteria number 1 and 2 is also dependent on the backend/API and will be implemented later as well

🧑‍🤝‍🧑 Conduct Kickoff meeting

Task Description

  • Using everyone's availability posted to When2Meet schedule a Kickoff meeting
  • Use the Kickoff meeting template in the shared document directory we've provided to guide the discussion and to record notes, decisions, and assignments
  • Set a time for your next meeting for later in the week

Technical Considerations
N/a

Additional Considerations
N/a

Create basic frontend project structure

Task Description
Add a JS framework, CSS framework, and testing framework. Set up folder structure, router, linter, and formatter.
Create initial versions of the pages in the wireframe with placeholder data, so that we have a working frontend to deploy.

Technical Considerations
JS framework: React
CSS framework: Tailwind CSS
Testing framework: Jest and React Testing Library
Router: React Router
Linter: ESLint with this config
Formatter: Prettier
Module Bundler: Webpack

Additional Considerations
Most of our config will be generated using Create React App.

Get and display nearest city supported by app

User Story
As a site visitor
I want a city near me to be displayed
So I can base my vacation preferences on a concrete place.

Acceptance Criteria

  • When the landing page is loaded, the nearest city in the Here2There database is displayed
  • If the user is in a supported city, the following text is used:
    • Looks like you’re somewhere near $city, $country
    • What should your next vacation destination be like compared to $city?
  • If the user is not in a supported city, the following text is used:
    • "Sorry, your city isn't supported yet. $supported_city is the nearest supported city."
  • "Close to $city" field on the home page are updated to display the city name:

Notes
Blocked by #27

API endpoint: return recommended cities given user preferences and current city

Task Description
When a GET request is made to the endpoint recommendedCities containing the parameters:

  • "city"
  • "isWarmer"
  • "isCheaper"
  • "isSafer"
  • "hasSmallerPopulation"
  • "isCloseToCity",

recommendedCities should return:

  • city
  • country
  • teleport_url
  • image_url
  • city_summary

...for the three cities that match the user preferences most closely.

Technical Considerations
This task includes writing an algorithm that chooses cities that are a good fit based on user preferences.

Additional Considerations
Incomplete list of error cases:

  • expected params aren't within the expected values
  • one or more params are missing
  • params other than expected params are passed

Errors should be handled consistently (e.g. return something like null).

Create basic backend project structure

Task Description
Add a backend framework and testing framework. Set up folder structure, linter, and formatter.

Technical Considerations
Backend framework: Django REST Framework
Testing framework: Django REST Framework
Linter: Pylint/Flake8
Formatter: Black

Additional Considerations
Consider using OpenAPI: https://swagger.io/tools/swagger-ui/, https://editor.swagger.io/

Potentially set up CI with GitHub Actions for backend, similar to what we have for the frontend.

API endpoint: return nearest Here2There city and country given params latitude and longitude

Task Description
When a GET request is made to the endpoint nearestCity containing the parameters "latitude" and "longitude", nearestCity should return the name and country of the Here2There city that is closest to the given latitude and longitude.

Technical Considerations
This task includes functionality that determines the closest pair of coordinates in a database compared to a given set of coordinates.

Additional Considerations
Incomplete list of error cases:

  • latitude or longitude params aren't within the expected values
  • one or more params are missing
  • params other than latitude and longitude are passed

Errors should be handled consistently (e.g. return something like null).

📤 Define & prioritize MVP features

Task Description

  • Each team member should add their ideas to the Project Vision & Feature Planning template before the team meeting
  • Prioritize each feature - Must Have, Should Have, Nice to Have
  • Meet with the team to review each feature & refine priorities

Technical Considerations
N/a

Additional Considerations
All Must Have tasks will make up your MVP. Make sure that you control the scope of the project by limiting the number of Must Have features to the ones you can reasonably complete by the end of Sprint 6.

Remember that you can always add new features once you complete the MVP.

🙋 Do you have questions about Chingu or the Voyage process?

Task Description
If you have questions about Chingu or the Voyage process join one or both of the Chingu Roundtable sessions held every:

  • Wednesday @ 2:00 p.m. GMT -6 (Chicago)
  • Saturday @9:00 a.m. GMT -6 (Chicago)

These sessions give you the opportunity to ask your questions in real time with a member of the Chingu team

Technical Considerations
These are held in our Discord community in the #ask-me-anything text & audio channels.

Additional Considerations
You may also ask questions anytime in the #ask-cohort-n-code-questions channel in Discord or by emailing [email protected]

⚙️ Set Up a Team Workflow

Task Description

  • Decide on the coding standards the team must follow.
  • Define the characteristics of your repo including the number of branches, branch names, & the workflow everyone must follow.
  • Agree on the format of commit messages, how Pull Requests will be reviewed, and GitHub branch protection rules.
  • Decide on where you’ll deploy your app and the branch to be considered as ‘production’ you’ll be deploying from.
  • Decide on what meetings you’ll need each week and to save time, schedule them as recurring meetings. You might want to look ahead to Develop the App to learn more about the types of meetings you’ll need.

Technical Considerations
N/a

Additional Considerations
Setup Your Team Workflow (Chingu Handbook)
Javascript Style Guides
Defining a Git Workflow (Chingu Handbook)
Git Branches (Chingu Handbook)
Git Commits (Chingu Handbook)
Git Pull Requests (Chingu Handbook)

🤝 Meet your team & schedule Kickoff meeting

Task Description

  • Meet your team by adding your introduction to the Team Channel
  • Start getting to know one another
  • Start discussing what projects you would like to create
  • Watch the Voyage Team Roles video to learn about the different roles members of your team may have signed up to fill.
    video link
  • Watch the How to Select a Voyage Project video
    video link

Technical Considerations
N/a

Additional Considerations
The Meet Your team section of the Voyage Guide contains the steps to follow

Use When2Meet to identify days & times when everyone on the team is available to meet.

Display recommendations when submitting user preferences

User Story
As a site visitor
I want my submitted preferences to result in recommendations
So I can find interesting new places to go on vacation.

Acceptance Criteria

  • When the "Find Vacation Spot" button on the landing page is clicked, user preferences are sent to the backend and recommendations are returned
  • Recommendations are displayed in a new page, with one card per recommendation
  • Frontend does not assume number of recommendations
  • The new page has a "Search Again" button that navigates to the landing page
  • In case of error, placeholder text is displayed
    • "Sorry, an error has occurred. Please try again later."
    • e.g. network error, no response from backend, no recommendations from backend, ...

Notes
Blocked by #28
User preferences being persisted after a search is out of scope.

Backend

Feature Description
REST API that connects to PostgreSQL database and serves the frontend.

Major User Stories/tasks

  • Clean up CSV data file so that it's ready to be transformed into a database
  • Create a PostgreSQL database based on the CSV file
  • Research Flask vs. Django and decide which to use for the API
  • Start building API - to split into further stories

🤔 Start thinking about project ideas & the technical stack

Task Description

  • Check out apps that Voyage teams have created in prior Voyage by reviewing the Project Showcase
  • Come up with 1 to 3 ideas for projects you'd like to build so you can discuss them with the rest of the team when the Voyage starts.
  • Think about what technical stack you'd like to use to build that app. Similarly, you'll discuss this as a team at the start of the Voyage.

Technical Considerations
N/a

Additional Considerations
N/a

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.