722.1 Choosing a technology stack
Select a stack that supports your project goals and provides the right balance of simplicity and power.
Overview
In this section, you will identify the core components of your project’s technology stack and explain why each one is suitable for your software solution. Since all students are using the same stack, this module focuses on understanding how each part contributes to the success of the project. You will also consider the trade-offs involved and how your chosen tools support both development and deployment.
The front-end: HTML, CSS and JavaScript
Your front-end will be built using the standard web technologies of HTML (structure), CSS (styling), and JavaScript (interactivity). This combination allows you to create user interfaces that are accessible in any modern browser without requiring users to install anything.
HTML provides the semantic structure of each page (headings, forms, navigation, etc.).
CSS is used to control layout, typography, colour schemes, and responsive design.
JavaScript handles interactivity—such as form validation, event handling, or dynamically updating page content using the DOM.
Why this works: These are foundational web technologies that are well-supported, easy to learn, and flexible. You can test your front-end locally or in the browser console without needing a server connection, which makes development and debugging easier.
The back-end: Flask (Python)
Flask is a lightweight web framework written in Python. It allows you to create server-side logic—like processing form submissions, handling user sessions, and querying a database—without the overhead of a full-stack enterprise framework like Django.
Routing: Flask allows you to define routes that respond to HTTP requests.
Templates: You can use Jinja2 templates to dynamically render HTML pages with data passed from your Python code.
Extensions: You can extend Flask with authentication, REST APIs, or other services as needed.
Why this works: Flask gives you complete control over the structure of your application and is simple enough for solo projects. Since it's based on Python, it builds on your existing programming knowledge and integrates well with SQLite.
The database: SQLite
SQLite is a lightweight, file-based relational database. It requires no separate server process, making it ideal for small projects.
Simplicity: Databases are stored as files, so setup and deployment are easy.
SQL-based: It uses standard SQL syntax, so you can practise writing meaningful queries for creating, reading, updating, and deleting data.
Integration: Flask provides built-in support for connecting to SQLite and executing queries safely.
Why this works: SQLite is an excellent starting point for learning database-driven development. It supports all the core features you’ll need for your project, and is easy to manage locally or during deployment.
Putting it all together
This stack is ideal for small-to-medium web applications where simplicity and clarity are important. Here’s a typical interaction flow:
The user interacts with your HTML/CSS/JS front-end
A form submission or action triggers a Flask route on the back-end
Flask processes data, updates or queries the SQLite database
Flask returns a response, often rendering a dynamic HTML page using templates
You’ll document this stack and its components in your System Design Specification (SDS). The choices you make here will inform how you design your directory structure, implement routes, and test your application.
Last updated
Was this helpful?