Reduced.to is a modern web application that reduces the length of link URL. So it's easier to remember, share and track.
App
Β·
Report Bug
Β·
Request Feature
π Table of Contents
List of frameworks/libraries used to bootstrap the project.
List of things you need to run the project locally and how to install them.
- npm
npm install npm@latest -g
- docker
https://docs.docker.com/get-docker/
- Fork / Clone this repository
- Install NPM packages
npm install && npm run install:all
- Navigate to backend folder, copy
.example.env
to.env
and fill it properly (see below). - Navigate to frontend folder, copy
.example.env
to.env
and fill it properly (see below). - Make sure you have a local instance of PostgreSQL running on port 5432. If not, you can run it using docker:
docker run --name reduced_to_db -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=reduced_to_db -p 5432:5432 -d postgres
- Run Prisma migration inside the backend folder:
npx prisma migrate dev --name init
- Run the backend:
npm run start:backend
- Run the frontend:
npm run start:frontend
The project is structured in the following way:
- π
root
- π¨
/apps/frontend
- π¦
/apps/backend
- Move to the frontend folder
cd ./apps/frontend
- Run the project (it will open a new window)
npm run dev
- Vite will be now listening for changes in the code and reloading the solution
- Move to the backend folder
cd ./apps/backend
- Run the project (be sure that you built the frontend before)
npm run start:dev
- Nest will be now listening for changes in the code and reloading the solution
-
You can easily build your application using docker. Just run the following commands:
-
Build and run frontend instance
docker build apps/frontend/ -t reduced.to-front docker run -p 5000:5000 reduced.to-front
-
Build and run backend instance
docker build apps/backend/ -t reduced.to-back docker run -p 3000:3000 reduced.to-back
-
Make sure to have a local instance of PostgreSQL running on port 5432. If not, you can run it using docker:
docker run --name reduced_to_db -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=reduced_to_db -p 5432:5432 -d postgres
-
Simply go to your favourite browser and visit
http://localhost:5000/
to see your application.
-
In case you have docker installed, you can single-click deploy and test your changes by running the following and going to
http://localhost:5000/
on your browser. -
When you run the command below, don't forget to change the .env file with the correct values.
docker compose -f docker/local/docker-compose.yml -p reduced-to up
NOTE: There is a known issue with the local docker-compose deployment. Because of the way the containers are communicating with each other, the frontend container will not be able to send requests to the backend container. This is because the backend container is accessible only from within the docker network. To overcome this issue, you can run only the backend locally and the other services using docker-compose.
For the minimal configuration the following settings have to be changed in their .env
file:
- APP_PORT: Backend port
- NODE_ENV: Node environment (development / production)
- DATABASE_URL: Database connection string
- RATE_LIMIT_TTL: Rate limt TTL (time to live)
- RATE_LIMIT_COUNT: Number of requests within the ttl
- LOGGER_CONSOLE_THRESHOLD: Threshold level of the console transporter.
- FRONT_DOMAIN: Frontend instance domain
- REDIS_ENABLE: Whether to use external redis store or not
- REDIS_HOST: Redis instnace host
- REDIS_PORT: Redis instance port
- REDIS_PASSWORD: Redis instance password
- REDIS_TTL: Redis ttl (in seconds)
- JWT_SECRET: Jwt secret string
- NOVU_API_KEY: Get it from https://novu.co/ (Not required for local development)
-
DOMAIN: Domain of your frontend app (used for cookies)
-
API_DOMAIN: Domain of your backend instance
Happy Hacking !
Simply copy and paste a URL into the provided area. Then click shorten URL! Your URL has now been shortened!
- Migrate backend to NestJS
- Migrate frontend to Qwik
- Better README
- Generate QRCode
- Split front-end into components
- Better UI
- Animations
- Logo
- Dark/Light mode
- Improve front-end components
- Backend tests
- Front-end Tests
- Logs
- Add a statistics page
- Add more ideas
Just create a Pull request already π
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star β!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE.txt
for more information.
Project Link: https://github.com/origranot/reduced.to