Merge branch 'master' of github.com:AmruthPillai/Reactive-Resume into l10n_master

This commit is contained in:
Amruth Pillai
2020-03-31 16:18:27 +05:30
21 changed files with 630 additions and 797 deletions

1
.dockerignore Normal file
View File

@ -0,0 +1 @@
node_modules

36
Dockerfile Normal file
View File

@ -0,0 +1,36 @@
## build image
FROM node:13.12.0-buster-slim as build
## set working directory
WORKDIR /usr/src/app
## add `/usr/src/app/node_modules/.bin` to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH
## install and cache app dependencies
COPY package.json /usr/src/app/package.json
## install app dependencies
RUN npm install --silent
## copy files
COPY . /usr/src/app
## build production app
RUN npm run build
## production environment
FROM nginx:1.17.9-alpine
## copy build artifacts to nginx
COPY --from=build /usr/src/app/build /usr/share/nginx/html
## copy custom nginx config
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx/nginx.conf /etc/nginx/conf.d
## export port 80
EXPOSE 80
## run nginx server
CMD ["nginx", "-g", "daemon off;"]

17
Dockerfile-dev Normal file
View File

@ -0,0 +1,17 @@
## base image
FROM node:13.12.0-buster-slim
## set working directory
WORKDIR /usr/src/app
## add `/usr/src/app/node_modules/.bin` to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH
## install and cache app dependencies
COPY package.json /usr/src/app/package.json
## install app dependencies
RUN npm install --silent
## start app
CMD ["npm", "start"]

1
Procfile Normal file
View File

@ -0,0 +1 @@
web: bin/boot

View File

@ -4,9 +4,9 @@
![Build & Deploy](https://github.com/AmruthPillai/Reactive-Resume/workflows/Build%20&%20Deploy/badge.svg)
![Code Style](https://badgen.net/badge/code%20style/airbnb/ff5a5f?icon=airbnb)
![GitHub last commit](https://img.shields.io/github/last-commit/AmruthPillai/Reactive-Resume)
![Docker Pulls](https://img.shields.io/docker/pulls/amruthpillai/reactive-resume)
![Localization](https://badges.crowdin.net/reactive-resume/localized.svg)
![GitHub](https://img.shields.io/github/license/AmruthPillai/Reactive-Resume)
![Uptime Robot status](https://img.shields.io/uptimerobot/status/m784631082-7c9a2e95377145a9cbaadc18)
#### A Free and Open-Source Resume Builder That Respects Your Privacy

View File

@ -4,9 +4,10 @@
"website": "https://rxresu.me/",
"repository": "https://github.com/AmruthPillai/Reactive-Resume",
"logo": "https://i.imgur.com/ugpElge.png",
"keywords": [
"react",
"resume",
"static"
]
"buildpacks": [
{
"url": "mars/create-react-app"
}
],
"keywords": ["react", "resume", "static"]
}

19
docker-compose-dev.yml Normal file
View File

@ -0,0 +1,19 @@
version: '3.7'
services:
reactive-resume:
container_name: reactive-resume
tty: true
build:
context: .
dockerfile: Dockerfile-dev
volumes:
- '.:/usr/src/app'
- '/usr/src/app/node_modules'
expose:
- '3001'
ports:
- '3001:3000'
environment:
- NODE_ENV=development
- CHOKIDAR_USEPOLLING=true

12
docker-compose.yml Normal file
View File

@ -0,0 +1,12 @@
version: '3.7'
services:
reactive-resume:
container_name: reactive-resume
build:
context: .
dockerfile: Dockerfile
expose:
- '80'
ports:
- '80:80'

View File

@ -10,9 +10,9 @@ title: Home
![Build & Deploy](https://github.com/AmruthPillai/Reactive-Resume/workflows/Build%20&%20Deploy/badge.svg)
![Code Style](https://badgen.net/badge/code%20style/airbnb/ff5a5f?icon=airbnb)
![GitHub last commit](https://img.shields.io/github/last-commit/AmruthPillai/Reactive-Resume)
![Docker Pulls](https://img.shields.io/docker/pulls/amruthpillai/reactive-resume)
![Localization](https://badges.crowdin.net/reactive-resume/localized.svg)
![GitHub](https://img.shields.io/github/license/AmruthPillai/Reactive-Resume)
![Uptime Robot status](https://img.shields.io/uptimerobot/status/m784631082-7c9a2e95377145a9cbaadc18)
Welcome to the front page of **Reactive Resume**, a free and open-source Resume Builder web app that focuses on one thing, **Privacy**. And also few other important features such as minimalistic UI/UX, customizability, portability, regularly updated templates, etc. But the important thing is that, your personal data is yours alone.

View File

@ -30,7 +30,7 @@ Something that's missing on the app that's halting your progress from making the
## Translation
For information on how to translate the app into your own language, please visit the [Translation](/translation/) section of the documentation.
Translating the app into your language has never been easier. Thanks to [Crowdin](https://crowdin.com/), a localization management tool, anyone can translate strings without having to mess arounf with a bunch of files. For information on how to translate the app into your own language, please visit the [Translation Secion](/translation/) of the documentation.
## Commit Code

View File

@ -6,11 +6,37 @@ title: Deployment
You've built the source code successfully and now you're on your way to deploying the app. There are some methods setup to deploy a version of the app without even having to build the source, so we'll run through all the steps here:
## Docker
If you are a fan of Docker as I am, you'd be happy to know that the app can be set up and running within seconds thanks to having set up both environments of Docker.
If you would like to run the **development server** through Docker, which also supports hot-reloads, just run:
```
npm run docker:dev
OR
docker-compose -f docker-compose-dev.yml up -d --build
```
If you would like to run the **production version of the app**, powered by NGINX, just run:
```
npm run docker
OR
docker-compose up -d --build
```
You can also alternatively pull the image from [Docker Hub](https://hub.docker.com/r/amruthpillai/reactive-resume) where the latest image is always built from source control.
```
docker pull amruthpillai/reactive-resume
```
## Deploying to Heroku
Heroku is a cloud platform that lets companies build, deliver, monitor and scale apps — we're the fastest way to go from idea to URL, bypassing all those infrastructure headaches.
[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy)
[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/AmruthPillai/Reactive-Resume)
## Deploying to Netlify

View File

@ -3,3 +3,130 @@ title: Translation
---
# Translation
Translating the app into your own language has never been easier. The project makes use of a powerful online tool called [Crowdin](https://crowdin.com/) to help manage translations and updates made to the app.
::: tip TL;DR
If you are already familiar with the Crowdin platform and want to contribute your time to translating a few strings, just head to the link below and get started!
### **[translate.rxresu.me](https://translate.rxresu.me/)**
:::
## Current Status
### Completed Translations
- English `en`
- Hindi `hi`
### Pending Translations
- Afrikaans `af`
- Arabic `ar`
- Assamese `as`
- Catalan `ca`
- Chinese Simplified `zh`
- Czech `cs`
- Danish `da`
- Dutch `nl`
- Finnish `fi`
- French `fr`
- German `de`
- Greek `el`
- Hebrew `he`
- Hungarian `hu`
- Italian `it`
- Japanese `ja`
- Kannada `kn`
- Korean `ko`
- Malayalam `ml`
- Marathi `mr`
- Norwegian `no`
- Polish `pl`
- Portuguese `pt`
- Punjabi `pa`
- Romanian `ro`
- Russian `ru`
- Spanish `es`
- Swedish `sv`
- Tamil `ta`
- Turkish `tr`
- Ukrainian `uk`
- Vietnamese `vi`
::: warning
If your language is not available in the list above, send me an email at <a href="mailto:im.amruth@gmail.com">im.amruth@gmail.com</a> with your request or raise an issue on GitHub and I'll add it on the Crowdin Platform.
:::
## Translating through Crowdin
### Step 1: Choose your Language
<p style="text-align: center">
<img src="./images/language-options.png" alt="Choose your Language" width="50%" />
</p>
As mentioned above, all you need to do is go to the [Translation Portal ](https://translate.rxresu.me/) of Reactive Resume and select the language you want to begin translating to.
### Step 2: Click on `Translate All`
The PR would be accepted and merged only when the translations are 100% complete, which you can track through Crowdin.
<p style="text-align: center">
<img src="./images/translate-all.png" alt="Translate All" width="40%" />
</p>
### Step 3: Create an Account with Crowdin
You can use your email address and password, or for a quick getaway, use one of the many social providers to login quickly and get started.
### Step 4.1: List of Strings to be Translated
On the left sidebar, you can see a list of strings that are ready to be translated. The red box means it's not translated yet, and a green box means it has been translated to the target language.
<p style="text-align: center">
<img src="./images/list-of-strings.png" alt="List of Strings to be Translated" width="40%" />
</p>
### Step 4.2: Enter the Translation using the Editor
You can enter the translated string in the editor below. It is powerul enough to suggest you whether you have made any mistakes in the formatting of the string as well, and autocorrect them. Once you are done with the translation, click on the `Save` button.
::: tip
To make the process faster, you may also use Keyboard Shortcuts such as `Cmd/Ctrl + S`.
:::
<p style="text-align: center">
<img src="./images/translation-editor.png" alt="Enter the Translation using the Editor" width="80%" />
</p>
### Step 4.3: Make Use of the Translation Suggestions
Crowdin is extremely powerful with NLP capabilities to understand your language and translate it automatically through numerous training provided through Open Source development. This will make your job much easier when translating from one language to another.
<p style="text-align: center">
<img src="./images/translation-helper.png" alt="Make Use of the Translation Suggestions" width="80%" />
</p>
### Step 5: That's All Folks!
Once you have translated all the strings, the integration between Crowdin and GitHub would kick in and start replacing the updated strings in the repo. I would get a notification around the same time to merge the PR, and once that's done you can use the app in your own language and share it with others in your community!
## Translating through GitHub
For those who don't want to go through the process of creating an account with Crowdin and be continuous contributors to the project's translation, you can also perform a one-off translation by editing the JSON files through GitHub. Here's how:
### Step 1: Choose your Language
Go to the `src/i18n/locales` folder in the master branch of the repository and choose the language of your choice. Alternatively, you can [click this link](https://github.com/AmruthPillai/Reactive-Resume/tree/master/src/i18n/locales) to go the specific folder in GitHub.
Be careful as the folder only contains ISO-639-1 Two Letter Language Codes, so refer the [list above](#current-status) to find the corresponding language folder.
### Step 2: Fork the Repository, Edit the `.json` Files
By clicking on the Edit button in any of the files, it immediately creates a fork of the repository where you can edit the files at once. You may also choose to clone the forked repository locally and translate the strings using your favorite editor, then create a Pull Request for the changes.
---
While this is a bit more time consuming because of the structure of files that has been set up, for those who know what they are doing and want to get translating quickly without any help, this is the quickest method. But for those who would like to stay in constant touch with the project and provide translations for future updates to come, the Crowdin path is recommended.

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

17
nginx/nginx.conf Normal file
View File

@ -0,0 +1,17 @@
server {
listen 80;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

1103
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,22 +1,31 @@
{
"name": "reactive-resume",
"version": "0.1.0",
"version": "1.0.0",
"private": true,
"engines": {
"node": "13.12.0",
"npm": "6.14.4"
},
"dependencies": {
"@material-ui/core": "^4.9.7",
"@fullhuman/postcss-purgecss": "^2.1.0",
"@testing-library/jest-dom": "^5.3.0",
"@testing-library/react": "^10.0.1",
"@testing-library/user-event": "^10.0.0",
"@testing-library/react": "^10.0.2",
"@testing-library/user-event": "^10.0.1",
"@vuepress/plugin-google-analytics": "^1.4.0",
"autoprefixer": "^9.7.5",
"axios": "^0.19.2",
"i18next": "^19.3.4",
"lodash": "^4.17.15",
"react": "^16.13.1",
"postcss-cli": "^7.1.0",
"react-dom": "^16.13.1",
"react-i18next": "^11.3.4",
"react-markdown": "^4.3.1",
"react-scripts": "3.4.1",
"react-toastify": "^5.5.0",
"uuid": "^7.0.2"
"react": "^16.13.1",
"tailwindcss": "^1.2.0",
"uuid": "^7.0.2",
"vuepress": "^1.4.0"
},
"scripts": {
"css": "postcss src/assets/tailwind/tailwind.src.css -o src/assets/tailwind/tailwind.css",
@ -34,7 +43,9 @@
"predeploy:app": "npm run build",
"deploy:app": "firebase deploy --only hosting:app",
"predeploy:docs": "npm run docs:build",
"deploy:docs": "firebase deploy --only hosting:docs"
"deploy:docs": "firebase deploy --only hosting:docs",
"docker:dev": "docker-compose -f docker-compose-dev.yml up -d --build",
"docker": "docker-compose up -d --build"
},
"eslintConfig": {
"extends": "react-app"
@ -52,19 +63,13 @@
]
},
"devDependencies": {
"@fullhuman/postcss-purgecss": "^2.1.0",
"@vuepress/plugin-google-analytics": "^1.4.0",
"autoprefixer": "^9.7.5",
"eslint": "^6.8.0",
"eslint-config-airbnb": "^18.1.0",
"eslint-config-prettier": "^6.10.1",
"eslint-plugin-import": "^2.20.1",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-prettier": "^3.1.2",
"eslint-plugin-react": "^7.19.0",
"eslint-plugin-react-hooks": "^3.0.0",
"postcss-cli": "^7.1.0",
"tailwindcss": "^1.2.0",
"vuepress": "^1.4.0"
"eslint-plugin-react": "^7.19.0",
"eslint": "^6.8.0"
}
}

6
static.json Normal file
View File

@ -0,0 +1,6 @@
{
"root": "build/",
"routes": {
"/**": "index.html"
}
}