LogoLogo
  • FAC Curriculum
  • archive
    • Node & npm introduction
    • developer
      • Programming Paradigms
    • handbook
      • Asking for help
      • Coaching groups
      • Code review
      • Course rules
      • Debugging
      • Employment schedule and material delivered in FAC20
      • GitHub Workflow
      • Glossary or terms
      • Presentation Guidance
      • Equality, Diversity and Inclusion
      • Installation guide
      • Learning circles
      • Mentoring guidance
      • What to expect from your mentors
      • One-day projects
      • Pair programming
      • Portfolio
      • Questions for problem solving
      • Progress Logs
      • Final project report
      • Managing software projects
      • Project Presentations
      • Project roles
      • Projects
      • Retrospectives
      • Role Circles
      • Safeguarding policy
      • Technical Spikes
      • System requirements
      • Tech for Better
      • User Manuals
      • Wellbeing Support
      • project-docs
        • What makes a mentor?
        • Product Handover
        • Sprint Planning
        • Tech for Better Presentations
        • User Research & Usability Testing
    • foundation
      • full-stack
        • Learning Outcomes
        • project
      • testing
        • project
        • spikes
  • docs
    • Contributing to the curriculum
    • Curriculum intent
    • Curriculum process
  • src
    • About our curriculum
    • course
      • Code of Conduct
      • Docker
      • .NET and Umbraco
      • Getting started
      • Founders and Coders coursebook
      • KSB's
      • Mini projects
      • Revision checklist
      • Svelte
      • TypeScript
      • handbook
        • Software Developer Handbook
        • Software Foundation Handbook
      • precourse
        • Before you start the course
        • Installation List
      • syllabus
        • developer
          • app
            • learning-outcomes
            • project
            • schedule
            • spikes
          • introduction
            • learning-outcomes
            • project
            • resources
            • schedule
          • week00-pre-course
            • We'd like you to spend some time before starting the course working on useful fundamentals.
            • spikes
          • week01-project01-basics
            • Employability introduction
            • Homework
            • learning-outcomes
            • Week of September 9th
            • project
            • resources
            • schedule
            • spikes
          • week02-project02-chatbot
            • employability
            • Homework
            • learning-outcomes
            • Week of September 16th
            • project
            • resources
            • schedule
            • spikes
          • week03-project03-server
            • Learning Outcomes
            • Week of September 23th
            • The Amazin' Quizzer API Backend
            • resources
            • schedule
          • week04-project03-frontend
            • learning-outcomes
            • Week of September 30th
            • UI for Quizzer App
            • resources
            • schedule
          • week05-project03-test-deploy
            • Testing and deployment
            • Week of October 7th
            • project
            • resources
            • schedule
          • week06-project04-databases
            • learning-outcomes
            • Week of October 14th
            • project
            • Databases
            • schedule
          • week07-project04-authentication
            • Learning Outcomes
            • Week of October 21st
            • project
            • resources
            • schedule
          • week08-project04-test-deploy
            • Learning Outcomes
            • Week of October 28th
            • project
            • resources
            • schedule
          • week09-reading-week
            • Learning Outcomes
            • overview
            • Project
            • Resources
            • schedule
          • week10-project05-DOTNET-intro
            • Learning Outcomes
            • overview
            • project
            • Resources
            • schedule
          • week11-project05-DOTNET-testing
            • Testing and deployment
            • Week of November 18th
            • project
            • Resources
            • schedule
          • week12-project05-DOTNET-deploy
            • Learning Outcomes
            • Week of November 25th
            • project
            • Resources
            • schedule
            • Spikes
          • week13-TFB-design
            • Learning Outcomes
            • overview
            • Project
            • Resources
            • schedule
            • Design Week Spikes
          • week14-TFB-build
            • Learning Outcomes
            • overview
            • Project
            • DevOps Resources
            • schedule
            • Spikes
          • week15-TFB-build
            • Learning Outcomes
            • overview
            • Project
            • Resources
            • schedule
            • Spikes
          • projects
            • in-house-design
              • Learning Outcomes
              • Project
              • Resources
              • schedule
              • Design Week Spikes
        • foundation
          • Obsolete-full-stack
            • project
          • post-course
            • Homework
            • schedule
        • portfolio
          • fruit-shop
            • learning-outcomes
            • project
            • resources
          • game
            • learning-outcomes
            • project
            • resources
          • hobby-page
            • learning-outcomes
            • project
            • resources
          • movie-data
            • learning-outcomes
            • project
            • resources
          • project-gallery
            • learning-outcomes
            • project
            • resources
          • website
            • learning-outcomes
            • project
            • JavaScript
        • tfb
          • week 1
            • Introduction (45 minutes)
            • Further reading
          • week 10
            • content
            • resources
          • week 11
            • What will we be doing this week?
            • resources
          • week 12
            • What will we be doing this week?
            • Further reading
          • week 2
            • Discover (90 minutes)
            • resources
          • week 3
            • content
            • resources
          • week 4
            • Mapping the user journey (90 minutes)
            • resources
          • week 5
            • Figma Workshop 1 (90 minutes)
            • Further reading
          • week 6
            • Figma Workshop 2 (90 minutes)
            • resources
          • week 7
            • Product pitches & Selection (90 minutes)
            • resources
          • week 8
            • content
            • resources
          • week 9
            • content
            • resources
    • learn
      • DOTNET
        • Introduction to .NET
      • auth
        • Authenticating web apps
      • database
        • Persisting data with SQLite and Node
      • dotnet-two
        • Dependency injections and interfaces in .NET
      • form-validation
        • Form validation
      • react
        • Building client-side apps with React
      • server
        • HTTP servers with Node & Express
      • typescript
        • TypeScript
    • mentoring
      • design-week
        • Analysis Workshop
        • Code planning
        • Definition Workshop
        • Discovery Workshop
        • Figma introduction
        • Usability testing
        • User Research
    • resources
      • http
        • introduction
    • workshops
      • cookie-auth
        • index
      • creating-promises
        • index
      • css-layout
        • index
      • cypress-testing
        • index
      • database-testing
        • index
      • dev-tooling
        • Developer tooling
      • dom-challenge
        • index
      • dom-rendering
        • index
      • es-modules
        • index
      • express-middleware
        • Express middleware
      • first-class-functions
        • index
      • form-validation
        • index
      • functions-callbacks-async
        • Functions, callbacks, & async JavaScript
      • git-intro
        • Introduction to Git
      • git-terminal
        • Using Git in the terminal
      • git-workflow
        • Git workflow
      • github-projects
        • GitHub Projects Workflow Workshop
      • heroku-sql-challenge
        • index
      • html-forms
        • index
      • learn-a11y
        • index
        • starter-files
          • solution
            • Accessibility solution explanation
      • learn-fetch
        • index
      • learn-integration-testing
        • index
      • learn-testing
        • Learn testing in JavaScript
      • learn-unit-testing
        • index
      • node-error-handling
        • Node error-handling
      • node-express-server
        • Node and Express HTTP server
      • node-npm-intro
        • Node & npm introduction
      • node-postgres
        • Learn Postgres with Node
      • node-scripting-challenge
        • index
      • password-security
        • index
      • promise-practice
        • index
      • react-components
        • React components
      • react-fetch
        • index
      • react-forms
        • React forms
      • react-refactor-classes
        • index
      • react-state-effects
        • React state & effects
      • real-world-fetch
        • index
      • scope-challenge
        • Scope debugging challenge
      • semantic-html
        • index
      • server-side-forms
        • Server-side forms
      • session-auth
        • Session authentication
      • sql-intro
        • index
      • tdd-array-methods
        • index
Powered by GitBook
On this page
  • Project Overview
  • Core Requirements
  • Stretch Goals
  • Project Phases
  • Initial Spike Stage
  • Core Project Development
  • API Suggestions
  • Easier APIs
  • More Challenging APIs
  • Submission Guidelines
  • Additional Considerations
  • Repository naming convention
Export as PDF
  1. src
  2. course
  3. syllabus
  4. developer
  5. week03-project03-server

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

  1. 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.

  2. Server-Side Setup:

    • Initialize a Node.js project using Express.

    • Implement a RESTful API for quiz-related operations and external API interactions.

  3. 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).

  4. 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.

  5. 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.

  6. 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

  1. Open AI API - https://platform.openai.com/

  2. JokeAPI - https://jokeapi.dev/

  3. The Dog API - https://thedogapi.com/

  4. The Cat API - https://thecatapi.com/

  5. Unsplash it - https://unsplash.it/

  6. REST Countries API - https://restcountries.com/

  7. UK Police API - https://data.police.uk/docs/

  8. Postcode Lookup - https://postcodes.io/

More Challenging APIs

  1. Twitter API - https://developer.twitter.com/en/docs/twitter-api

  2. Google Maps API - https://developers.google.com/maps

  3. Spotify API - https://developer.spotify.com/documentation/web-api/

  4. Giphy API - https://developers.giphy.com/docs/api/

  5. GitHub API - https://docs.github.com/en/rest

  6. The Movie DB API - https://developers.themoviedb.org/3/getting-started/introduction

  7. The Guardian API - https://open-platform.theguardian.com/documentation/

  8. News API - https://newsapi.org/docs/endpoints

  9. 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

PreviousWeek of September 23thNextresources

Last updated 8 months ago