Git Product home page Git Product logo

guided's Introduction

Guided

Guided is a WIP play project to try out some frameworks. Typescript front and back, with a little go.

Product

ridersbible.com allows a user to plot locations to visit on a prospective travelling tour.

  • Route - Uses Google Directions to plot a route between each spot, splitting longer routes by a max numbre of hours to ride at once.
  • Plan - Dates, duration, distances, borders and historic temperatures enrich a users route
  • Community - Sharable public links to a users profile and guides. Follow other users activity.
  • Track - Track and share progress along a route. Upload images and other content.

Development

Docker is used only for local development environment. docker-compose.builder.yml for preparing docker environment, docker-compose.yml for running environment. The local db instance is onsidered throwaway, desired workflow is to always work on fresh database with seed data. So dataset is predictable and common.
make install
make develop

make install

node_modules aren't shared between containers and host, so you'll want to run yarn install on your device for linting within your IDE.
  • Installs npm dependencies for backend and website
  • Initial transpilation of backend

make develop

In development mode the compute and amend_dates services are triggered via a local GET request. In production mode they're lambdas triggered via SQS events.
  • Initialises local postgres instance with default roles and schema
  • Watches backend common source code
  • Launches backend services in develop mode, accessible at localhost:5000/graphiql
  • Launches frontend service in develop mode, accesible at localhost:8000

Backend

  • /backend directory hosts a yarn workspace with number of modules.
  • @guided/graphql is the Backend for Frontend. GraphQL subscriptions powered by Postgraphile. Playground
  • @guided/compute is a lambda service. Route computations are handed to @graphql/compute via SQS events. Uploads geojson files to S3 for mapbox to display.
  • @guided/spinup is a database helper module. The create directory holds SQL that manages the schema. Postgraphile is enriched via PostgresQL functions, types + row level permissions, including JWT auth. Database config. @guided/spinup executes .sql files by iterating through these directories in sequence.
  • @guided/database uses @rmp135/sql-ts to generate Typescript interface from Postgres DB.
  • @guided/codegen uses graphql-codegen to generate Typescript from GraphQL schema seen in generated.ts(x) files.
  • /go directory with some simple go modules, including the amend_dates microservice
  • Testing via Jest. Would like more test coverage including integration tests paired with a blue/red versioned deployment.

Frontend

React Native solutilon builds frontend for Web/Android/iOS, thanks to react-native-web.
  • frontend/site holds codebae
  • Mobx for state management
  • Storybook for dev workflow
  • Served by GraphQL BFF
  • Strict Typescript, interfaces generated from GraphQL schemas
  • Responsive layout presents Mobile App layout when viewed on mobile browser
  • Native specific code handled via *.native.tsx file naming

Deploy

  • /deploy directory holds Terraform deployment configuration handled Terraform
  • config.yml holds CircleCI config

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.