Powered by Go, PostgreSQL, React, Redux, Kubernetes, Cypress E2E and Github CI/CD
What's this project all about?
This project showcases how to build a Go parser that converts (almost) anything(YAML, TOML, CSV, and EXCEL) to JSON and upload it to Github Gist. We focus on the following aspects as part of this project.
- 1. Build an efficient Golang parser that takes (YAML/TOML/CSV/EXCEL) file as an input and converting it to JSON.
- 2. Build a Golang API service with JWT support using Golang's Gin framework and authenticate users using Github Oauth.
- 3. Take the converted JSON by Golang parser and upload it to Github Gist.
- 4. Build UI using React and Redux.
- 5. Deployment using Kubernetes.
Start the application
- Register a new Github OAuth application - https://github.com/settings/applications/new
- Get the Github Client ID and Client Secret.
- Create a new Github access token with Gist Write permissions - https://github.com/settings/tokens
- Update the Github client ID in your React applications .env.dev file.
[email protected] gistify % cat frontend/.env.dev REACT_APP_API_ENDPOINT = "http://localhost:8003" REACT_APP_GITHUB_CLIENT_ID = "21c29d28ab59b778a8bd" REACT_APP_COOKIE_DOMAIN = "localhost"
- Set the following environment variables with Github client ID, Github client secret, Github API token, and JWT secret key.
export GISTIFY_APP_ENV="DEV" export GISTIFY_DEV_APP_URL="http://localhost:3000/" export GISTIFY_DEV_GITHUB_CLIENT_ID="" export GISTIFY_DEV_GITHUB_CLIENT_SECRET="" export GISTIFY_DEV_JWT_SECRET_KEY="" export GISTIFY_DEV_GIST_API_TOKEN=""
- Start the Postgres container.
- Start the React app.
cd frontend && npm run start
- Start the Backend app.
cd backend && go run main.go