Web Development

Web Tech Stack

Overview of modern web development technologies covering from HTML, CSS, JS, frameworks, and backend tools.

Web Structure

Modern website uses HTML (HyperText Markup Language) to define the structure of webpage, CSS (Cascading Style Sheets) used to style and layout HTML elements. JS (JavaScript) allows you to make a webpage interaction.

HTML5CSS3JavaScript
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Website Title</title>
    <style> /* CSS styles for this file */</style>
    <link rel="stylesheet" href="example.css"> <!-- External CSS link -->
</head>
<body>
    <h1>This is a Header</h1>
    <p>This is a paragraph. Html are made of element with tags, they may have some attribute declared inside the tags<>. id attribute is used to uniquely give an id to an elements, while class attribute is used to groups elements. </p>

    <button id="button1" class="buttonClass" >Click Me!</button>

    <script></script> <!-- Internal JS script -->
    <script src="example.js"></script> <!-- External JS link -->
</body>
</html>

However, coding from scratch is less effective. But there is lots of framework with many functionalies and feature to be introduced in this site.

JavaScript

Click here to understand basics of JavaScript

CSS Frameworks

Some tools to enhance the quality and productivity of CSS

Bootstrap

Bootstrap

A simple and quick developement CSS framework for easy designing by adding predefined bootstrap class such as buttons, styles, layout on the html element class attribute. Visit Bootstrap website for more info and customization. Add the following source in html to start using bootstrap.

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>

Responsive Web Design

Click here to explore more about responsive web design with Bootstrap

SASS & SCSS

SASS

SASS (Syntactically Auwsome Style Sheets) is a CSS extension to add more functionality to CSS, and needs to compile to CSS. SASS have similar syntax to python. While SCSS (Sassy SASS) is a syntax of SASS similar to Java. The key feature are variables, nesting, mixins (bundle some properties), inheritance, mathematics operations and partials (multiple files). Below are the example page and code.

Legacy Demo Unavailable
<!DOCTYPE html>
  <html lang="en">
  <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>SCSS and Sass Example</title>
      <link rel="stylesheet" href="styles.css">
  </head>
  <body>
      <div class="container">
          <header class="header">
              <h1>Demo</h1>
          </header>
          <div class="content">
              <p>This is a demo for SCSS and Sass features.</p>
              <button class="button">Primary Button</button>
              <button class="secondary-btn">Secondary Button</button>
          </div>
          <footer class="footer">
              <p>&copy; 2024 Nut17</p>
          </footer>
      </div>
  </body>
  </html>

Tailwind CSS

Tailwind CSS

A optimized and lightweight CSS framework with highly customizable developement and more configuration space than Bootstrap. Tailwind CSS does not impose a predefined style for components, but they have a utilities class to help building components. Tailwind also have 'purge' feature to remove unused CSS.

Tailwind CSS

Click here to explore more about TailwindCSS

Purge CSS

PurgeCSS

A tool to remove unused CSS. Visit PurgeCSS to learn how to use. Build tools like PostCSS or TailwindCSS can configure and automate the purging of CSS.

npm install -g purgecss
purgecss --css styles.css --content index.html --output purified.css

Font

Fonts-families tell what font type to be used. Font-weight defind the thickness of the font. Font-styles are like italic, underline, etc.

Font FamilyCharacteristics
SerifClassic, traditional official fonts
Sans-serifModern, simple fonts
MonospaceEvery character have same width
CursiveCursive writing

Scaling units

UnitDescriptionExample
PixelThe absolute pixel size16px
EmRelative unit based on parent element1.5em
RemRelative to root element1.5 rem
PercentageRelative to the parent element50%
Viewport1 unit is the 1% of the browser's visible window3vw(width); 4vh(height)
Points1 points is 1/72 inch used in traditional printing media12pt

The font size represent the height of the character from the top to the bottom of the part. IT industry uses combination of rem for consistenst typography across pages and vw for large dynamic text that adapt screen size. Default of html font size is 16px.

Below shows an example using Google Fonts

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Google Fonts Example</title>
    <!-- Link to Google Fonts -->
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&family=Lobster&display=swap" rel="stylesheet">
    <style>
        body {
            font-family: 'Roboto', sans-serif;
        }
        h1 {
            font-family: 'Lobster', cursive; /* Use Lobster font */
            font-size: 48px;
        }
    </style>
</head>
<body>
    <h1>Welcome to My Website!</h1>
    <p>The title uses Lobster font while paragraph uses Roboto font </p>
</body>
</html>

Icons

Discover amazing icon from FontAwesome and embed into web.

fontawesome-example.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Font Awesome with Custom Styles</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
    <style>
        .icon {
            margin: 15px;
        }
        /* Custom styles for different icons */
        .fa-home {
            color: #4CAF50; /* Green */
            font-size: 2em;
        }
    </style>
</head>
<body>
    <i class="fas fa-home icon"></i>    <!-- Home icon with custom styles -->
</body>
</html>

Figma

Figma

Figma is a web application for interface design. Making layout with autolayout, variable. However, the website need to be coded manually by looking at the design information. Learn more about it here

For quick web UI/UX design tutorial, watch this and for color testing, visit this website .

Frontend Frameworks

Frontend Frameworks provide better way to make website efficiently, dynamically, and consistent.

Static SiteDynamic Site
Website consisting only HTML, CSS, JSInteracts with backend

React vs Vue (Dynamic)

ReactVue

Both are open-source java library for building frontend application, focusing on dynamic UI and data changes. Vue is inspired by Angular.

FeaturesReactVue
Learning CurveSteepGentle
SyntaxJSX (Complicated)HTML (Cleaner)
PerformanceGreat on large, complex projectGreat on small-medium project, single page application
State ManagementUsing hooksUsing reactive data (Pinia)
Data BindingOne-way data binding (parent to child)Two-way data binding
CommunityVast and mass support and supported by FacebookGrowing Rapidly
Larger FrameworkNext.jsNuxt.js
NuxtNext.js

Vue

Click here to explore more about Vue, Nuxt.js framework

React

Click here to explore more about React, Next.js framework and web developement concepts

Hugo (Static)

Hugo

A framework wrtitten on GO for static content developement and management. It's very quick to build up.

Backend Tools

Typescript

Typescript

A language derived from javascript to deal with variable type consistency and adds Java programming features like OOP, generics, enum, union and intersection types. Typescript can be compiled to javascript. Tyepscript is suitable for developing and debugging huge JS projects. Visit Typescript website to learn more.

TypeScript Code
// TypeScript Example: Person and Employee Management

// Define a type alias for a string or number
type ID = string | number;

// Interface for an Employee
interface Employee {
  id: ID;
  name: string;
  age: number;
  position: string;
  displayInfo(): string;
}

// Class for a Person
class Person {
  name: string;
  age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  greet(): string {
    return `Hello, my name is ${this.name}, and I am ${this.age} years old.`;
  }
}

// Class Employee that extends Person and implements Employee interface
class FullTimeEmployee extends Person implements Employee {
  id: ID;
  position: string;

  constructor(id: ID, name: string, age: number, position: string) {
    super(name, age);
    this.id = id;
    this.position = position;
  }

  // Implementation of displayInfo method from Employee interface
  displayInfo(): string {
    return `Employee ID: ${this.id}, Name: ${this.name}, Position: ${this.position}`;
  }
}

// Function to print a person's greeting
function printGreeting(person: Person): void {
  console.log(person.greet());
}

// Create an instance of FullTimeEmployee
const employee: FullTimeEmployee = new FullTimeEmployee(101, "John Doe", 28, "Software Engineer");

// Use the methods
printGreeting(employee); // Output: Hello, my name is John Doe, and I am 28 years old.
console.log(employee.displayInfo()); // Output: Employee ID: 101, Name: John Doe, Position: Software Engineer

Eslint

Eslint

A tool to identifying and fixing common issue in JavaScript on syntax error, potential bugs and code style

Wordpress

Wordpress

A full-stack online web CMS (Content Management System). Build website with templates easily without coding.

Backend Framework

Server-Side RenderingClient-Side Rendering
HTML generated at serverHTML generated at client
Faster initial load, better SEO (Search Engine Optimization)Slower initial, faster transition between pages
Suitable for content-heavy website, SEO-cricital appsHighly interactive, dynamic apps
Static SiteDynamic Site
DescriptionA website consisting only of HTML, CSS, and JavaScript files with no backendA website that interacts with a backend for features like APIs or databases
Hosting PlatformNetlify, Vercel, GitHub Pages, Firebase Hosting, AWS S3 + Cloud FrontNetlify, Vercel, Heroku, Render, AWS (EC2, Elastic Beanstack, Lambda)
FrameworksReact(Vite), Vue(Vite), Next.js, Nuxt.js, HugoVue, React, Angular, Svelte, Node.js, Python, PHP Laravel, Ruby on Rails

A backend web server is used to manage client request (Apache or Ngnix). Visit production to learn more on how to make website available to public.

Production

Click here to learn more about hosting platform

Vite

Vite

A fast, modern build tool and development server for JavaScript and TypeScript projects. It focuses on lightning-fast cold starts and efficient bundling for production. It can handle CSR, SSR, SSG, Dynamic Rendering. Vite website

Nitro

Nitro is an open-source TypeScript server engine, largely known as the backend driving Nuxt 3. Works with Vite to handle the backend/API side of a full-stack project. Works anywhere (Node.js, Bun, Deno, Cloudflare Workers), Zero-Config: Automatically handles routing, caching, and deployment presets.

Node.js

Node.js Icon

Node.js is a JavaScript runtime environment available on backend. It is event driven, non-blocking I/O, fast and lightweight.

ToolDescription
npm (Node Package Manager)Well known for its vast ecosystem of libraries and module, it installs packages globally. For beginner, small projects.
npxRuns package without installing them globally
pnpmA fast, disk-space-efficient package manager. It only stores one copy of a package. Good for large projects.
yarnA fast, reliable, and secure package manager using package lock. Suitable for deteministic local machine. Might not suitable for older tool compatibility
  • Node.js uses .js file extension, require(), module.exports.
  • ES module use .mjsfile extension, import, export. Set "type": "module" in package.json to use ES module if you're using .js
CommandsDescription
npm init -yGenerate package.json that record npm dependencies and metadata
npm run devRuns the development server
npm run generateGenerates a static site in .output/public folder
npm run buildCreates a production-ready Node.js server in .output folder
npm run startRuns the production server
npm run previewPreview the production build locally
npx serve .output/publicPreview the static site locally

Express.js

Express.js

Express.js is a minimal web framework for Node.js, designed to simplify building web applications and APIs.

Express.js

Explore how Express.js works!

Django

Django

Django is a high-level Python web framework that enables rapid development of secure and maintainable web applications. Comes with built-in admin panel, and user authentication. Django have ORM (Object-Relational Mapping) allowing developers work with database without writing raw SQL and uses MVT architecture for it's software design pattern.

  • Model: Represents the data structure and database schema. It defines the shape of the data and handles database queries via Django's ORM.
  • View: Handles the logic for what data is presented to the user. Views fetch data from models and send it to templates.
  • Template: Responsible for rendering the final HTML that the user sees. Templates receive data from views and format it for display.

PHP

PHP

PHP (Hypertext Preprocessor) is a popular, open-source server-side scripting language designed primarily for web development. It is widely used to create dynamic and interactive web pages. PHP code is executed on the server, and the result is sent back to the client as plain HTML. PHP works by embedding PHP code within HTML using <?php ...?>

PHP

Explore how PHP works!

Database

A database used to store datas and can be hosted on different server.

SQL

postgresqlmysqlsqlite

SQL (Structured Query Language) databases are structured database using tables with rows and columns to store data, and use keys to refer to other table for relation.

SQL DatabasesFeature
PostgreSQLOpen-sourced supporting relational and object-oriented feature, nosql and have strong performance. Industry standard for relational database.
MySQLClassic SQL database
SQLiteSuitable for smaller projects and edge devices

NoSQL

MongoDB
Firestore
Redis
Neo4j

NoSQL Databases are suitable for unstructured data. Often used for real-time and distributed system.

NoSQL DatabasesFeature
MongoDBFor document
FirestoreGoogle cloud
RedisKey-value
Neo4jGraph database

Tech Stack

A tech stack refers to a set of tools, programming languages, and technologies that work together to build digital products or solutions such as websites, mobile, and web apps. Frontend tech stack is the client-side appplication such as visual appereance. Backend is the server-side software developement.

Tech StackTechDescription
LAMPLinux, Apache, MySQL, PHPCost efficiency, flexibility, performance
MEANMongoDB, Express.js, Angular, Node.jsJS focused, open source, fast
MERNMongoDB, Express.js, React, Node.jsMEAN with React as frontend
MEVNMongoDB, Express.js, Vue, Node.jsMEAN with Vue as frontend
ASP.NETASP.NET MVC, IIS, Angular, SQL, AzureFor Windows
PythonPython, DjangoEasy to use

Copyright © 2026 Nut17. All rights reserved.