The Amazin' Quizzer API Backend
Project Overview
Your project is to build the backend for a dynamic web application that combines a quiz generator with data from multiple external APIs. This backend will serve as the foundation for a future full-stack application, showcasing your skills in server-side development, API integration, and data manipulation.
Core Requirements
TypeScript Implementation::
The entire backend project must be written in TypeScript.
Utilize TypeScript's static typing for all modules, functions, and API interfaces.
Configure the TypeScript compiler (tsconfig.json) for the project's specific needs.
Server-Side Setup:
Initialize a Node.js project using Express.
Implement a RESTful API for quiz-related operations and external API interactions.
JSON Endpoints:
Create endpoints that fetch data from at least two external APIs and return it in JSON format.
Implement endpoints for quiz-related operations (e.g., get questions, submit answers, retrieve results).
Quiz Functionality:
Develop server-side logic to:
Generate quizzes with randomly selected questions based on a chosen subject area.
Process quiz answers and calculate results, including areas of strength and weakness.
Data Management:
Use a JSON object in a separate file as a mock database to store quiz questions.
Implement CRUD operations for managing quiz questions in this mock database.
External API Integration:
Integrate at least two external APIs to enhance the quiz experience or provide additional information related to quiz topics.
Implement proper error handling for failed API requests or unavailable data.
Stretch Goals
Implement more complex quiz generation algorithms (e.g., adaptive difficulty).
Add a favourite count feature for questions and allow filtering by this criterion.
Develop more sophisticated results analysis.
Implement caching mechanisms for external API calls to improve performance.
Create comprehensive API documentation using tools like Swagger.
Project Phases
Initial Spike Stage
Set up the basic structure of your Express server.
Implement a single endpoint that interacts with one external API.
Core Project Development
Develop the full set of RESTful endpoints for quiz operations.
Integrate multiple external APIs.
Implement the quiz generation and results calculation logic.
API Suggestions
Easier APIs
Open AI API - https://platform.openai.com/
JokeAPI - https://jokeapi.dev/
The Dog API - https://thedogapi.com/
The Cat API - https://thecatapi.com/
Unsplash it - https://unsplash.it/
REST Countries API - https://restcountries.com/
UK Police API - https://data.police.uk/docs/
Postcode Lookup - https://postcodes.io/
More Challenging APIs
Twitter API - https://developer.twitter.com/en/docs/twitter-api
Google Maps API - https://developers.google.com/maps
Spotify API - https://developer.spotify.com/documentation/web-api/
Giphy API - https://developers.giphy.com/docs/api/
GitHub API - https://docs.github.com/en/rest
The Movie DB API - https://developers.themoviedb.org/3/getting-started/introduction
The Guardian API - https://open-platform.theguardian.com/documentation/
News API - https://newsapi.org/docs/endpoints
TfL API - https://api.tfl.gov.uk/
Submission Guidelines
Host your code in a Git repository with clear documentation.
Deploy your project on GitHub Pages. Feel free to deploy it elsewhere as well if you prefer and have the time.
Include a comprehensive README.md file detailing:
Project setup instructions
API endpoints and their usage
External APIs used and their purpose in the project
Any stretch goals implemented
Ensure your server is deployable, even though a full deployment isn't required at this stage.
Additional Considerations
Design your API with future frontend integration in mind. The frontend part of this project will be added next week.
Implement proper error handling and validation for incoming requests and external API responses.
Securely store any API keys or sensitive information required by your server.
Document your API structure and endpoints thoroughly for future development.
By completing this project, you will demonstrate your ability to create a robust backend application that combines original functionality with external data sources, showcasing your skills in API development, integration, and server-side logic implementation.
Repository naming convention
Please name your repo following this template: PRO03_BACK_Name1_Name2_Name3_Name4
Last updated