Skip to content

NurseryNav simplifies the search for nearby nursery schools by providing an easy-to-use map interface.

Notifications You must be signed in to change notification settings

kubawajs/nursery-nav

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nursery-Nav

Frontend build Backend build

NurseryNav simplifies the search for nearby nursery schools by providing an easy-to-use map interface to help you find the perfect childcare option for your little ones.

Live URL: https://znajdzzlobek.pl/

Backend API DEMO: https://nursery-nav-api.vercel.app/


This project is part of 100 commitow challenge. It helps me learn front-end technologies like React, Typescript, and NestJS.

Stack

Frontend

Backend

Getting Started

Prerequisites

  • Node v21.6.2

Frontend

Configuration

Add the .env file in the folder root with the keys:

REACT_APP_GEOAPIFY_API_KEY=
REACT_APP_API_URL=
REACT_APP_NAME=
REACT_APP_CONTACT_MAIL=
REACT_APP_GOOGLE_ANALYTICS_TRACKING_ID=
REACT_APP_DATA_SOURCE_UPDATE_DATE=
Parameter Type Description
REACT_APP_GEOAPIFY_API_KEY string Key to enable the map. Can be created here: https://www.geoapify.com/get-started-with-maps-api#create-project
REACT_APP_API_URL string URL to the API instance, e.g. on local it can be http://localhost:3000
REACT_APP_NAME string The custom name of your application. It is displayed in the header and titles across the website
REACT_APP_CONTACT_MAIL string Email used in contact dialog on a map view
REACT_APP_GOOGLE_ANALYTICS_TRACKING_ID string Google Analytics 4 tracking ID
REACT_APP_DATA_SOURCE_UPDATE_DATE date Last data update date, manually entered (displayed in tooltips)

Running frontend

Go to ./src/nursery-nav and run npm run start.

Backend

A static JSON file is provided as the backend API for the MVP version. Check ./data/RZ-instytucje-enriched.json

Configuration

Add the .env file in the folder root with the keys:

FRONTEND_URL=
CACHE_TTL=
THROTTLE_TTL=
THROTTLE_LIMIT=
Parameter Type Description
FRONTEND_URL string Provide URL to your frontend instance, e.g. http://localhost:3001 when running on local. This step is not required, but enables the frontend application origin to access the backend API - the app has CORS enabled by default.
CACHE_TTL number Cache expiration TTL in milliseconds.
THROTTLE_TTL number Throttle time limit in milliseconds.
THROTTLE_LIMIT number Calls limit within the TTL.

Running backend

Go to ./src/nursery-nav-api and run npm run start:dev.

API doc

Go to /api to display API Swagger doc:

API Swagger doc

Project backlog

Project backlog is available in Github Projects

Features

MVP ✅

Map view

Desktop Mobile
Map view desktop List view mobile Map view mobile

Details view

Desktop Mobile
Details view desktop Details view mobile

Phase 1

Frontend

Feature Status
Static data source
Map
Pins on map
Institution details view
Search
Display institution details on the pin click
Basic component styling
Group pins on the map
SEO
Sorting
Filtering
Direct URLs to each institution
CICD
Live URL

Phase 2

  • Update docs

Frontend

Feature Status
Connection to the API
Infinite scroll
Sorting with API
Connect map with API
Filtering with API
Direct URLs to filtered results by query params
Filtering map locations
Autocomplete for institution name
Caching
About page
SEO improvements

API

Feature Status
API project
Swagger /api
GET all institutions
GET institution details
GET locations
Sorting
Autocomplete endpoint
Cities/voivodeships endpoint
Filtering
Pagination
CICD
Live URL
CORS
Add real ID to the data source
Data update with new file

Phase 3

  • Go-live
  • Update README

Frontend

Feature Status
Add sitemap
Add Google Analytics
Comparison view
Select items to compare on the list view
Quick filters with cities
Direct URLs to filtered cities
Feedback form v1 (report data error, suggest change)
About page content
Display hour price when monthly not provided
Add 404 page
Add a map to mobile view

API

Feature Status
Rate limiting
Helmet

[Plan] Phase 4

Frontend

  • Institution profile
  • Institution rating
  • Performance upgrades

Backend

  • Profile management
  • Convert data source to MongoDB
  • CSV import
  • Fully automate data update process

Known bugs

  • The "Powrót" button on institution details does not remember the parameters of the previous page
  • City and voivodeship filters not selected based on query parameter
  • Price is not visible in mobile view when the "Brak wolnych miejsc" chip is displayed
  • City dropdown is not filtered based on voivodeship
  • Voivodeship is not automatically selected on city dropdown change
  • If filters are selected on the list view, the map pin is not displayed on the details view when redirected from autocomplete
  • Map does not focus on the pin when visiting the institution details page from a direct link

Data source

Static file /data/RZ-instytucje.csv + subfolders.

Original data source - Rejestr Żłobków - lista instytucji - dane.gov.pl.

License: CC0 1.0

About

NurseryNav simplifies the search for nearby nursery schools by providing an easy-to-use map interface.

Resources

Stars

Watchers

Forks

Packages