Front end for the Accord's Library website. Accord's Library is a archival project focused on the works of Yoko Taro, and the Drakegard & NieR universes.
Go to file
DrMint 4cf3158790 Updated deps 2022-07-10 03:32:33 +02:00
.github/workflows Removed some static text and use textui 2022-03-29 23:45:23 +02:00
public Remove the sitemaps from the repo 2022-03-28 13:06:02 +02:00
src Improved the filterHasAttributes + Chip 2022-07-10 02:47:32 +02:00
.eslintignore There's a lot to unpack here 2022-07-08 01:42:38 +02:00
.eslintrc.js There's a lot to unpack here 2022-07-08 01:42:38 +02:00
.gitignore Moved db testing to a seperate page 2022-04-23 21:47:59 +02:00
.hintrc Applied more lint rules and fixed the code accordingly 2022-03-27 17:01:14 +02:00
.prettierignore Added prettier ignore config 2022-03-13 15:49:04 +01:00
CONTRIBUTING.md Now using expression function style + some sections 2022-07-03 14:34:00 +02:00
LICENSE Added stuff 2021-11-04 12:45:18 +01:00
README.md Added basic search 2022-05-22 14:43:36 +02:00
design.config.js Improvements here and there 2022-06-12 13:54:17 +02:00
graphql-codegen.config.js Updated deps + removed pointer/coarse for hover instead 2022-06-10 22:50:51 +02:00
next-env.d.ts Added animation to tooltip opening closing 2022-03-13 15:34:51 +01:00
next-sitemap.config.js Updated deps + removed pointer/coarse for hover instead 2022-06-10 22:50:51 +02:00
next.config.js Improved stuff 2022-06-18 21:53:23 +02:00
package-lock.json Updated deps 2022-07-10 03:32:33 +02:00
package.json Updated deps 2022-07-10 03:32:33 +02:00
postcss.config.js Ran prettier on more file type 2022-03-13 15:56:03 +01:00
run_accords_dev.sh Added npm run-scripts 2022-05-07 11:35:53 +02:00
run_accords_prod.sh Added npm run-scripts 2022-05-07 11:35:53 +02:00
tailwind.config.js Now using expression function style + some sections 2022-07-03 14:34:00 +02:00
tsconfig.json Added testing and display recorders info 2022-02-27 08:17:58 +01:00

README.md

Accords-library.com

Node.js CI GitHub Libraries.io dependency status for GitHub repo

Technologies

Back

  • CMS: Stapi
    • GraphQL endpoint
    • Multilanguage support
    • Markdown format for the rich text fields
    • Use webhooks to notify the front-end and image processor of updates

Image Processor

  • Convert the images from the CMS to 4 formats
    • Small: 512x512, quality 60, .webp
    • Medium: 1024x1024, quality 75, .webp
    • Large: 2048x2048, quality 80, .webp
    • Og: 512x512, quality 60, .jpg

Front (this repository)

  • Language: TypeScript
  • Framework: Next.js (React)
  • Queries: GraphQL Code Generator
    • Fetch the GraphQL schema from the GraphQL back-end endpoint
    • Read the operations and fragments stored as graphql files in the src/graphql folder
    • Automatically generates a typesafe ready to use SDK using graphql-request as the GraphQL client
  • Markdown: markdown-to-jsx
    • Support for Arbitrary React Components and Component Props!
    • Autogenerated multi-level table of content and anchor links for the different headers
  • Styling: Tailwind CSS
    • Manually added support for scrollbar styling
    • Support for Material Icons
    • Support for creating any arbitrary theming mode by swapping CSS variables
    • Support for many screen sizes and resolutions
  • State Management: React Context
    • Persistent app state using LocalStorage
  • Accessibility
  • Multilingual
    • By default, use the browser's language as the main language
    • Fallback languages are used for content which are not available in the main language
    • Main and fallback languages can be ordered manually by the user
    • At the content level, the user can know which language is available
    • Furthermore, the user can temporary select another language then the one that was automatically selected
  • SSG + ISR (Static Site Generation + Incremental Static Regeneration):
    • The website is built before running in production
    • Performances are great, and possibility to deploy the app using a CDN
    • On-Demand ISR to continuously update the website when new content is added or existing content is modified/deleted
  • SEO
    • Good defaults for the metadate and OpenGraph properties
    • Each page can provide the thumbnail, title, description to be used
    • Automatic generation of the sitemap using next-sitemap
  • Data quality testing
    • Data from the CMS is subject to a battery of tests (about 20 warning types and 40 error types) at build time
    • Each warning/error comes with a front-end link to the incriminating element, as well as a link to the CMS to fix it
    • Check for completeness, conformity, and integrity

Installation

git clone https://github.com/Accords-Library/accords-library.com.git
cd accords-library.com
npm install

Create a env file:

nano .env.local

Enter the followind information:

URL_GRAPHQL=https://url-to.strapi-accords-library.com/graphql
ACCESS_TOKEN=abcdef0123456789
REVALIDATION_TOKEN=abcdef0123456789
SMTP_HOST=email.provider.com
SMTP_USER=email@example.com
SMTP_PASSWORD=mypassword123
NEXT_PUBLIC_URL_CMS=https://url-to.strapi-accords-library.com
NEXT_PUBLIC_URL_IMG=https://url-to.img-accords-library.com
NEXT_PUBLIC_URL_WATCH=https://url-to.watch-accords-library.com
NEXT_PUBLIC_URL_SELF=https://url-to-front-accords-library.com
NEXT_PUBLIC_URL_SEARCH=https://url-to.search-accords-library.com

Run in dev mode:

./run_accords_dev.sh

OR build and run in production mode

./run_accords_build.sh
./run_accords_prod.sh