mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-13 16:22:59 +10:00
Merge branch 'master' of github.com:AmruthPillai/Reactive-Resume into l10n_master
This commit is contained in:
1
.dockerignore
Normal file
1
.dockerignore
Normal file
@ -0,0 +1 @@
|
||||
node_modules
|
||||
36
Dockerfile
Normal file
36
Dockerfile
Normal 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
17
Dockerfile-dev
Normal 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"]
|
||||
@ -4,9 +4,9 @@
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
#### A Free and Open-Source Resume Builder That Respects Your Privacy
|
||||
|
||||
|
||||
13
app.json
13
app.json
@ -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
19
docker-compose-dev.yml
Normal 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
12
docker-compose.yml
Normal file
@ -0,0 +1,12 @@
|
||||
version: '3.7'
|
||||
|
||||
services:
|
||||
reactive-resume:
|
||||
container_name: reactive-resume
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
expose:
|
||||
- '80'
|
||||
ports:
|
||||
- '80:80'
|
||||
@ -10,9 +10,9 @@ title: Home
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
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.
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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.
|
||||
|
||||
[](https://heroku.com/deploy)
|
||||
[](https://heroku.com/deploy?template=https://github.com/AmruthPillai/Reactive-Resume)
|
||||
|
||||
## Deploying to Netlify
|
||||
|
||||
|
||||
@ -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.
|
||||
|
||||
BIN
docs/translation/images/language-options.png
Normal file
BIN
docs/translation/images/language-options.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 225 KiB |
BIN
docs/translation/images/list-of-strings.png
Normal file
BIN
docs/translation/images/list-of-strings.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 163 KiB |
BIN
docs/translation/images/translate-all.png
Normal file
BIN
docs/translation/images/translate-all.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
BIN
docs/translation/images/translation-editor.png
Normal file
BIN
docs/translation/images/translation-editor.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 66 KiB |
BIN
docs/translation/images/translation-helper.png
Normal file
BIN
docs/translation/images/translation-helper.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 94 KiB |
17
nginx/nginx.conf
Normal file
17
nginx/nginx.conf
Normal 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
1103
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
37
package.json
37
package.json
@ -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
6
static.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"root": "build/",
|
||||
"routes": {
|
||||
"/**": "index.html"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user