A full-stack application demonstrating OData service integration with search functionality using Northwind database.
ODataDemoSearch/
├── frontend/ # Next.js frontend application
├── odata-proxy-backend/ # Express.js proxy backend
├── .gitignore
└── README.md
- 🔍 Search customers from Northwind OData service
- 🚀 Express.js proxy backend with ES modules
- ⚡ Real-time search functionality
- 🎯 Searches across: Company Name, Contact Name, City, Country
- 📊 Returns: Customer ID, Company Name, Contact Name, City, Country
The backend serves as a proxy to the Northwind OData service, providing:
- Search endpoint:
/api/search?q=search_term
- CORS enabled for frontend integration
- ES module support
- Error handling and logging
cd odata-proxy-backend
npm install
npm start # or npm run dev for development
Server runs on http://localhost:3001
(development) or PORT
environment variable (production)
Next.js application with TypeScript providing modern search interface.
cd frontend
npm install
npm run dev # for development
npm run build && npm start # for production
Frontend runs on http://localhost:3000
Create frontend/.env.local
for development:
NEXT_PUBLIC_API_URL=http://localhost:3001
- Root Directory:
odata-proxy-backend
- Build Command:
npm install
- Start Command:
npm start
- Environment Variables:
PORT
(auto-provided by Render)
- Root Directory:
frontend
- Build Command:
npm run build
- Start Command:
npm start
- Environment Variables:
NEXT_PUBLIC_API_URL=https://odatademosearch-backend.onrender.com
# Install all dependencies
npm run deploy:setup
# Development
npm run dev
# Individual services
npm run start:backend
npm run start:frontend
GET /api/search?q=alfki
Response:
[
{
"CustomerID": "ALFKI",
"CompanyName": "Alfreds Futterkiste",
"ContactName": "Maria Anders",
"City": "Berlin",
"Country": "Germany"
}
]
- Frontend: Next.js 15, React 19, TypeScript
- Backend: Node.js, Express.js, Axios
- External API: Northwind OData Service
- Module System: ES Modules
- CORS: Enabled for cross-origin requests
- Deployment: Render.com (backend), Render.com (frontend)