- An open-source url-shortener.
- Build with:
- Golang
- Mux (Gorilla)
- MongoDB
- Redis
- React
- Typescript
- TailwindCSS
- Shadcn/UI
-
Clone the project locally with
git clone https://github.com/ivinayakg/shorte.live.git
-
Setup env files
- for frontend env variables, run the following command from the repo root, in the terminal.
cp client/sample.env client/.env
- for backend env variables, run the following command from the repo root, in the terminal.
cp api/sample.env api/.env
- for frontend env variables, run the following command from the repo root, in the terminal.
-
Setup Google Oauth keys
- Currently, the service only has one primary means of authentication, and that is with Google OAuth. Read in detail here
- You need to obtain your secret key and client ID to make this work.
- Login to your Google console here.
- Create a new project here.
- Open the API dashboard, and go to
OAuth consent screen
here. Once there configure your screen, read more here - Now navigate to
credentials
and create a new one.- add
http://localhost:3100
intoAuthorized JavaScript origins
- add
http://localhost:3100/user/google/callback
intoAuthorized redirect URIs
- Read more here
- add
- Once done copy your
client id
and yourclient secret
, and paste into yourapi/.env
file for the variableGOOGLE_OAUTH_CLIENT_ID, GOOGLE_OAUTH_CLIENT_SECRET
and done.
-
Setup Local DB and Local Redis
- You need
Docker Desktop
installed for this on your system. check here - Once verified, open your
Docker Desktop
and keep it running in the background. - Run the following command from the repo terminal
docker-compose -f config/compose.yml up
- If you want it to be running in the background add the
-d
flag.docker-compose -f config/compose.yml up -d
- You need
-
Test
- Open
client
directory in your terminal and runyarn dev
- Open
api
directory in your terminal and rungo run .
- and done
- Open
- Coming soon...
- Hey, thank you for wanting to contribute to this project. This project is really special to me, so my sincere gratitude to you for interacting with this project to whatever extent you have. Thank you.
- You can start with contributing from here
- You can reach out to me for discussion or help. (Please keep things professional and straight, don't waste my time)
- Discord:
ivinayakg
- Email:
[email protected]