Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Website Version 2 #37

Open
miccheng opened this issue Oct 29, 2018 · 16 comments
Open

Website Version 2 #37

miccheng opened this issue Oct 29, 2018 · 16 comments

Comments

@miccheng
Copy link
Member

miccheng commented Oct 29, 2018

Proposal

Goal: Split up the website into a few discreet components

  1. Video listing site

    • Potentially build with static website generator (GatsbyJS)
  2. API server (GraphQL) - to be used by frontend and other services

    • Listing of videos
    • Listing of events
    • Listing of presenters
    • Listing of organizations
  3. Management Website

    • Volunteers to upload videos
    • Event organizers to update event details
    • Speakers to claim and update their own presentations
@hhandoko
Copy link

That's a great idea @miccheng, I would like to help out. A couple of thoughts:

  1. how do we organise work between volunteers, and
  2. how do we decide feature priorities?

I assume you already have something in mind 😁

@miccheng
Copy link
Member Author

how do we organise work between volunteers

I will probably setup a Pivotal Tracker board.

how do we decide feature priorities?

The 3 sections above can be worked on independently. The management website just updates a database. The API server reads from the DB. The static site just calls the API.

Just need to decide on the schema and API contract first.

@hhandoko
Copy link

How about using GitHub projects instead? It's Trello-like, and I think easier to correlate PRs with open tickets.

Also, been reading about Gatsby, looks like a good fit for the front-end. Any thoughts about the backend stack?

@yingkh
Copy link

yingkh commented Oct 30, 2018

For section 1 and 3 (the front end), we need to give a review in layout and style and user experience of the website.
I will want to get involved in the two sections.

Also, need to make all components unit testable. Better if we can make use of automated testing.

@hhandoko
Copy link

hhandoko commented Nov 1, 2018

I would like to start working on the API server @miccheng, any thoughts on the stack, CI tools, and potential hosting provider?

I can work with any tech... But, if you don't have any preference, I can start with Elixir + Phoenix, and use Travis to run automated tests.

@miccheng
Copy link
Member Author

miccheng commented Nov 2, 2018

Travis-CI definitely!

Was thinking either Go or Elixir/Phoenix cos of their superior GraphQL server support.

No experience with Elixir though.

@hhandoko
Copy link

hhandoko commented Nov 2, 2018

How about I set it up and you can review it then?

Do you have an existing DB that I can hook into? I'll pick an entity (e.g. videos) and expose it as a GraphQL object type.

@yingkh
Copy link

yingkh commented Nov 2, 2018

@hhandoko beware of existing database that is used by the current engineers.sg website.

@kaihendry
Copy link

GatsbyJS is super complex last time I checked. Couldn't a Makefile suffice?

@hhandoko
Copy link

hhandoko commented Nov 2, 2018

@yingkh it's a roundabout way of saying: "please give me the credentials for the test / prod DB" 😁

I find it's also much easier to understand the schema when I can correlate the DB data with the website output.

@miccheng can you create a new (blank) repo for me or grant me permission to create one?

@miccheng
Copy link
Member Author

miccheng commented Nov 3, 2018

@hhandoko Here's the schema file for the current website: https://github.com/engineersftw/website/blob/master/db/schema.rb

Here's the schema file for the volunteers website: https://github.com/engineersftw/esg-servers/blob/master/video_uploader/db/schema.rb

Hopefully can combine them to shed some light. The website now uses Episode as the video entity. The volunteer site uses Presentation which is closer to what i want.

I would suggest coming up with a GraphQL schema file first before jumping into building the API server. WDYT?

@hhandoko
Copy link

hhandoko commented Nov 4, 2018

For sure, let me have a look at the schema first and open up a new issue to track it there 👌

@miccheng
Copy link
Member Author

miccheng commented Nov 6, 2018

@hhandoko I have uploaded the first draft of the GraphQL Schema with the current entities mapped as Type items.

Here's the GitHub repo: https://github.com/engineersftw/esg-graphql

I have added you as a collaborator.

@hhandoko
Copy link

I don't have any comments on the first draft, so perhaps I'll get started on the Phoenix app, focusing on the Presentation entity first.

@miccheng
Copy link
Member Author

miccheng commented Nov 11, 2018 via email

@serverwentdown
Copy link

serverwentdown commented Feb 6, 2019

Prisma could be a nice ORM to have, see https://www.prisma.io/docs/prisma-graphql-api/reference/queries-qwe1/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants