NextJs application for Mapswipe community website.
Before you start, create .env.local
file:
touch .env.local
Set these environment variables:
MAPSWIPE_API_ENDPOINT=https://apps.mapswipe.org/api/
MAPSWIPE_COMMUNITY_API_ENDPOINT=https://api.mapswipe.org/graphql/
NEXT_PUBLIC_POSTHOG_KEY=<posthog-key>
NEXT_PUBLIC_POSTHOG_HOST_API=<posthog-host-api>
yarn install
# This fetches latest data from MapSwipe database for projects
yarn fetch-data
yarn dev
Whenever new texts for translation are added, translation files need to be generated.
yarn generate:i18n
Before creating a pull request, all lint and type issues must be fixed. To check for issues:
yarn lint
yarn css-lint
yarn typecheck
yarn unimported
yarn build
Deployments will be triggered in 2 ways:
- Anything pushed to
main
branch will trigger immediate deployment to configured github io page. - Every day at UTC 00:01, deployment will be triggered with latest data from MapSwipe database.
- Pull the latest changes from the
main
branch - Checkout to a new branch
- Navigate to the source string files here
- Open appropriate file(s) and edit string(s) as per requirement
- Push the changes to the local branch
- Create a pull request to the main branch
- Go to Transifex project
- Click on the language you are looking to translate the source into
- Open the file to translate the string
- Translate individual string and save changes
- Open individual strings, make sure they are correct, and click the 'Review' button
- Continue translating and reviewing the strings until all the strings are translated and approved
- NOTE: Reviewers must have appropriate permission
- After all the strings are 100% translated in Transifex, a pull request will be sent to the main branch
- Each resource (file) will be committed in the same PR (if not merged) as soon as it is 100% translated
- Merging the pull request will trigger a latest build and the same will be deployed in production
- IF LANGUAGE IS NOT PRESENT IN THE WEBSITE
- Add the supported language as per the supported languages guide below
Languages listed in i18next-parser.config.js are listed as options to view the website in that particular language.
To add a new language option, user should add ISO_639-1 code of that language to the list.
module.exports = {
locales: ['en', 'ne'] // NOTE: add ISO code in this list,
};
Language's title and abbreviation in the selected language, needs to be added in languages.ts.
After the language settings are added, user should generate the language files.
yarn generate:i18n
MapSwipe website supports 'News & Updates' or blogs in the form of markdown. To add a new post, you can add a markdown file inside blogs folder.
The name of the file will determine the url for that post.
For example: this-is-a-blog.md
file will be routed to
https://mapswipe.org/en/blogs/this-is-a-blog
.
The markdown should follow the following template:
---
title: This is a blog
publishedDate: 2022-08-17
author: John Doe
description: Lorem Ipsum
coverImage: /img/blogImages/example-image.png
featured: true
---
# Markdown Content
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,
when an unknown printer took a galley of type and scrambled it to make a
type specimen book. It has survived not only five centuries, but also the leap into
electronic typesetting, remaining essentially unchanged.
It was popularised in the 1960s with the release of Letraset sheets containing
Lorem Ipsum passages, and more recently with desktop publishing software like
Aldus PageMaker including versions of Lorem Ipsum.
- We are using YAML frontmatter to set markdown metadata in posts
- The metadata inside '---' must be filled and is required
- The metadata renders in the card view of the Home or the posts listing page
publishedDate
should be inYYYY-MM-DD
format. Any other format is not supported.- Project images
coverImage
should be uploaded in the /img/blogImages folder. - The value for
featured
determines whether to highlight the posts on News & Updates section of home page