Running | Technologies | License
Search360 is a full-stack web application that enables users to search the web using DuckDuckGo and stores query history. The project includes pagination, search highlighting, and persistent query history with caching for improved performance.
✅ Search using DuckDuckGo API
✅ Fast & efficient caching with Redis
✅ Search highlighting (like Chrome’s Find feature)
✅ Persistent query history stored in SQLite
✅ Built with React, Redux, NestJS, SQLite, and Redis
docker
node >= 20
git clone https://github.com/arthursvpb/search360.git
cd search360
Copy the .env.example
file to a .env
in the api
folder.
# Run the back-end
cd ./api && npm run docker:start # docker:reset for a clean start-up
# Go back to the root folder
cd ..
# Run the front-end
cd ./www && npm install && npm run dev
- Frontend: Runs on
http://localhost:5173/
- Backend: Runs on
http://localhost:3000/
To improve performance, Redis is used for query caching:
- Search queries are cached to prevent redundant API calls.
- Past queries are stored in Redis and reloaded instantly when the application restarts.
Run the following command:
docker exec -it redis redis-cli FLUSHALL
This will reset all cached queries.
Supports both GET and POST requests.
{
"q": "your-query"
}
{
"results": [
{
"title": "Example Title",
"url": "https://example.com"
}
]
}
GET /history
{
"history": [
{
"id": 1,
"searchTerm": "example query",
"createdAt": "2025-02-21T12:34:56.789Z"
},
{
"id": 2,
"searchTerm": "another query",
"createdAt": "2025-02-21T12:30:00.123Z"
}
]
}
- Frontend: React, Redux, Material UI
- Backend: NestJS, SQLite, Redis
- API: DuckDuckGo
- Containerization: Docker
This project is under the MIT license. See the LICENSE file for more details.