This is a personal study project created to test and explore various frameworks and libraries. The project demonstrates a full-stack architecture with a React frontend and NestJS backend working together to deliver a privacy-focused search experience through DuckDuckGo integration using the duck-duck-scrape library.
This project is open for contributions from anyone interested in learning or experimenting with the technologies used. Feel free to fork, submit pull requests, or suggest improvements.
├── frontend/ # React frontend application
└── backend/ # NestJS backend service
- React - A JavaScript library for building user interfaces
- TypeScript - For type-safe code
- Vite - Next generation frontend tooling
- TanStack Query - Powerful asynchronous state management
- TanStack Router - Type-safe routing solution
- Zod - TypeScript-first schema validation
- TailwindCSS - Utility-first CSS framework
- DaisyUI - Tailwind CSS component library
- NestJS 11 - A progressive Node.js framework
- TypeScript - For type-safe development
- OpenAPI/Swagger - API documentation
- Class Validator/Transformer - Request validation and response serialization
- duck-duck-scrape - DuckDuckGo search integration
- Node.js 20 (specified in .nvmrc files)
- npm or yarn
- nvm (Node Version Manager) recommended
Note: Both frontend and backend projects use Node.js 20. If you're using nvm, make sure to run
nvm use
in each project directory before installing dependencies.
-
Set up Node.js version:
nvm use
Note: A root-level .nvmrc file is provided to ensure consistent Node.js version (v20) across all workspaces.
-
Install all dependencies:
npm install -prefix frontend npm install -prefix backend
- Start the frontend development server:
npm run dev -prefix frontend
-
Copy the environment file and configure it:
cp backend/.env.development backend/.env
-
Start the backend development server:
npm run start:dev -prefix backend
- Frontend runs on
http://localhost:5173
by default - Backend API runs on
http://localhost:3000
by default - API documentation is available at
http://localhost:3000/docs