Blog Post

Gistify

Powered by Go, PostgreSQL, React, Redux, Kubernetes, Cypress E2E and Github CI/CD

Demo

  1. Live demo
  2. Video demo

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

  1. Register a new Github OAuth application - https://github.com/settings/applications/new
  1. Get the Github Client ID and Client Secret.
  1. Create a new Github access token with Gist Write permissions - https://github.com/settings/tokens
  1. 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"
  1. 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=""
  1. Start the Postgres container.
docker-compose up
  1. Start the React app.
cd frontend && npm run start
  1. Start the Backend app.
cd backend && go run main.go

License

MIT © dineshsonachalam