engineersftw / website

Engineers.SG
https://www.engineers.sg
16 stars 15 forks source link

Website Version 2 #37

Open miccheng opened 5 years ago

miccheng commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

Travis-CI definitely!

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

No experience with Elixir though.

hhandoko commented 5 years ago

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 commented 5 years ago

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

kaihendry commented 5 years ago

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

hhandoko commented 5 years ago

@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 commented 5 years ago

@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 commented 5 years ago

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

miccheng commented 5 years ago

@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 commented 5 years ago

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 commented 5 years ago

Cool! On Sun, 11 Nov 2018 at 10:30 AM, Herdy Handoko notifications@github.com wrote:

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.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/engineersftw/website/issues/37#issuecomment-437638329, or mute the thread https://github.com/notifications/unsubscribe-auth/AAM8DGtH7WuYc-ZSmcwSxXidxcswjgamks5ut4vcgaJpZM4X--sM .

serverwentdown commented 5 years ago

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