This application provides advanced search capability and notifications for Austin Public Library events.
STATUS: in development (see the TODO.md file for current issues)
This application scrapes the APL event calendar (https://library.austintexas.gov/events) into a searchable index. The frontend application provides (will provide) advanced search and creating of notifications based on search criteria.
There are four microservices in this project:
- app-scraper -- Scrapes the event calendar into a searchable index
- app-search-api -- REST API for searching the index
- (TBD: Service to manage notifications)
- app-ui -- Front end application
STATUS: The three listed services currently have MVP implementations. See the TODO.md document for short-term development plans.
There is a demo instance running at: https://courtney-rosenthal.github.io/apl-event-finder/
The demo instance has a Swagger UI for its API here: https://apl-event-svc.crosenthal.com/swagger-ui/index.html
The backend microservices are coded in Kotlin using Spring Boot. Elasticsearch is used for data storage and searching. Gradle is used for builds.
The frontend is implemented with PrimeVue, which is the Vue.js framework and the PrimeUI widget library. It has been built and tested with Node version 20.5.0.
For full stack development, all the services and resources are run locally. To setup your environment, perform the following steps.
To build the entire project, from the project base directory run:
./gradlew build -x check
To start Elasticsearch (needed for tests and execution), run:
docker-compose -f dev/docker-compose.yml up [-d]
The "-d" above is optional. Include it to "detach" and run the services in the background. Omit it to keep the services running in the foreground.
Next, to run the test suite, do:
./gradlew check
To perform a trial run of the scraper app (this will go to library.austintexas.gov and retrieve 10 upcoming events, do:
./gradlew app-scraper:bootRun
To start the API service, run:
./gradlew app-search-api:bootRun
You can verify the service is running with:
$ curl http://localhost:8080/api/ping
pong
The Swagger interface to the API will be available here: http://localhost:8080/swagger-ui/index.html
The front-end can be launched with:
cd app-ui
npm run dev
The front-end will be available at: http://localhost:5173/
The setup to do front-end development is much simpler than the above.
To run the front-end UI locally, using the backend service running for the demo site, do:
cd app-ui
VITE_API_BASE_URL="https://apl-event-svc.crosenthal.com/api" npm run dev
The front-end will be available at: http://localhost:5173/
See deploy/README.md
Courtney Rosenthal cr@crosenthal.com
The source to this project is here: https://github.com/courtney-rosenthal/apl-event-finder
The license for use is here: https://github.com/courtney-rosenthal/apl-event-finder/blob/main/LICENSE