Coder Social home page Coder Social logo

my-covid-story / www Goto Github PK

View Code? Open in Web Editor NEW
8.0 2.0 5.0 99.45 MB

We are a group of concerned citizens who could no longer stand by as Ontario is led into a humanitarian crisis. We believe the power of storytelling is an effective means to drive government action.

Home Page: https://www.mycovidstory.ca

License: Creative Commons Zero v1.0 Universal

JavaScript 5.33% CSS 0.81% Shell 0.76% TypeScript 93.09%
covid-19 ontario activism vercel prisma docker stories

www's Introduction

My Covid Story

This is an extremely early MVP, so there is a lot to do.

Our stack / architecture is:

Quick Start

  1. Clone this repo.
  2. Install dependencies with npm i.
  3. Copy .env.template to .env.
  4. Get a local postgres db running. Docker is probably easiest, but local postgres would also work. With Docker installed, run docker run --name my-covid-story-dev -p 5432:5432 -e POSTGRES_PASSWORD=mycovidstory -d postgres:12.6-alpine (this will match the DB URL string in .env).
  5. Run npx prisma migrate deploy to apply migrations in prisma/migrations.
  6. Run npx prisma db seed --preview-feature to see test data from prisma/seed.ts.
  7. Run npm run dev to start the dev server. Open http://localhost:3000 in your browser to see the app.
  8. Run npm test to run the test suite. This also gets run automatically on each Pull Request.

Prisma Migrate

We use Prisma Migrate to manage the evolution of our database schema. To work around a current limitation in Prisma, we exclude certain relation fields from the schema when running prisma migrate.

These fields are marked with a //nomigrate comment in the schema.prisma file. Excluding them is handled automatically by the prisma.sh wrapper script for the prisma CLI. For simplicity, you can always use ./prisma.sh intead of npx prisma and the script will do the right thing.

Learn More

This is a Next.js application bootstrapped with create-next-app and deployed on the Vercel Platform. To learn more about Next.js, take a look at the following resources:

You can check out the Next.js GitHub repository - your feedback and contributions are welcome!

https://vercel.com?utm_source=my-covid-story&utm_campaign=oss

www's People

Contributors

davesteinberg avatar dependabot[bot] avatar jamiesonroberts avatar mwickett avatar ryanwelcher avatar silent1mezzo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

www's Issues

`/story/[id]` - individual story view

Build out /story/[id] where [id] is the ccuid from the DB of the story. I think for now, we use getStaticPaths to statically generate each post.

As we grow, we can constrain the number that we pre-render at build time and use fallback: true to render the rest on-demand. The render is then cached for future visits.

Paginate story feed

We're getting to the point where we have enough stories that we should be paginating the feed page.

What about adding commitlint?

I think adding commitlint inside a new husky commit-msg hook would help in standardizing the commit messages and maybe even in creating an automatic changelog. There are plenty of tools for that, if you want I can open a PR for this.

Share card on iOS spacing

We need to add some bottom spacing on the share card and drawer so that the swipe between apps bar isn't super close to the floating ribbon or drawer contents

image

Add Sharing Controls to Form Submission

Relies on #6

  • Where would you like your story to be shared? (Checkboxes)
  • What information would you like to share along with your story? (Checkboxes)
  • Can a journalist contact you for more information or an interview (Radio buttons)
  • If yes, please enter your preferred method of contact (text box)

Custom 404 page

We should have a custom 404 page rather than relying on the NextJS default

Map postal code FSAs to city names

FSAs (the first three digits of a postal code) aren't meaningful to most users. It would be helpful to show the name of the city where that FSA resides.

Canada Post has an API, but it's intended for looking up a specific address and it has a per-call cost.

Wikipedia has the data, but it's spread out over 18 pages of HTML. I don't see any raw data. I suppose it would be possible to scrape the pages and assemble the data ourselves.

I also found this by Googling. I don't know if it's actually free or if it's any good, and I didn't create an account to try downloading.

`format` command running on staging

Prettier / eslint is configured, but just need to add a command and wire it up to husky so that our commits are all nice and consistently formatted.

Update schema for SEO

Include the following schema into the head of the HTML page to aid in SEO

<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Organization", "name": "MyCovidStory", "alternateName": "MyCovidStory.ca", "url": "https://MyCovidStory.ca", "logo": "", "sameAs": [ "https://www.facebook.com/MyCovidStoryCA", "https://twitter.com/MyCOVIDStory_CA", "https://www.instagram.com/MyCovidStory_CA/", "https://github.com/my-covid-story/www", "https://MyCovidStory.ca" ] } </script>

Adding multi language support

  • Introduce localization for the following languages - Urdu, Hindi, Punjabi. At this point in time, unless it is possible for us to get someone to translate all static fields for us, we will need to depend on translating the text using Google Translate at a minimum
  • Add a message on the story page to remind users that they are more than welcome to share their story even if it is not in English
  • Add in a link for users to be able to contact us to volunteer their support for translation (addressed in #102)

Improve story form field behaviour

  • Clear the contact fields (name, email, phone twitter) when the contact check is unchecked
  • When one of the optional contact fields has a value, display an optional label beside the other two.

Automatically email stories to Premier & key cabinet personnel

As an MVP, we will first focus on...:

  • sending an email with the link to stories to premier + key cabinet personnel. Every story will trigger an email to these parties, for now (no curation)
  • Once a story has been sent, add a label on the story to say we have shared to the premier/key cabinet personnel.

All stories are shared, as long as the story is published and approved. Unlike sharing with media personnel, we only share the public facing link to the premier & cabinet (which is publicly accessible anyway).

Will this project be going global?

I'm an Italian student who had a very similar idea to the project you're developing and I would love to contribute and see it available globally, even outside Canada. Do you think it's something that could be done?

List all stories on /

  • API rework (to support server-side and client-side rendering)
  • Basic stories feed at /stories
  • More responsive layout
  • Background images (one from each category-based collection)
  • FSA to city mapping
  • Single story details at /stories:id
  • Navigation from feed to single story
  • Include name for display, but only if not anonymous

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.