Front end
The browser-facing layer uses HTML for structure, CSS for presentation and JavaScript for behaviour. It receives user input and displays application data.
CET138 Assignment 1
I created this more simple explained but the knowledge best and way of pronounce and exlpore my portfolio site
Architecture and data flow
Full-stack development connects the interface a person sees with the server-side logic and data that make an application useful.
The browser-facing layer uses HTML for structure, CSS for presentation and JavaScript for behaviour. It receives user input and displays application data.
The server validates requests, applies business rules, handles authentication and exposes endpoints through an API.
A database stores persistent information such as accounts, products and tasks. Server-side code reads or changes that information safely.
Full-stack development means understanding the complete path through a web application. The client is normally a browser. When a user performs an action, front-end JavaScript may send an HTTP request to an API. The back end receives that request, checks its data and permissions, runs application logic, and may query a database. It then returns a response—often JSON—which the browser converts into a visible interface update.
This separation gives each layer a clear responsibility. The front end should not connect directly to a private database, and the server should not rely on browser validation alone. A full-stack developer needs to understand these boundaries so that data remains reliable, secure and maintainable.
Working demonstration · simulated architecture
This static demonstration visualises a typical data request. It does not connect to a real server or database.
The user asks to load a profile.
JavaScript creates an HTTP request.
The server validates and processes it.
The matching record is retrieved.
ctit25a.asn.ismt.edu.np
const stages = ["client", "frontend", "server", "database"];
for (const stage of stages) {
activateJourneyNode(stage);
await wait(700);
}
This example helped me understand that a visible page update may depend on several separate layers, each with its own responsibility and possible failure points.
Structure and meaning
HTML describes the content and meaning of a page so that browsers, search engines and assistive technologies can understand it.
HTML stands for HyperText Markup Language. A page is built from elements, normally written with opening and closing tags. Attributes add information such as a link destination, input type or accessible name. Correct nesting produces a logical document tree that the browser exposes as the DOM.
Semantic elements such as <header>, <nav>, <main>, <article> and <footer> describe a region’s purpose. Headings create an outline; paragraphs, lists and tables organise information; links connect resources; images need meaningful alternative text; and form labels connect instructions to controls. HTML should describe the content before CSS changes its appearance or JavaScript adds behaviour.
Working demonstration · semantic structure
Select an element to highlight its position, purpose, syntax and accessibility value.
A grouped part of the article.
Introduces a page or section and can contain a heading, logo or introductory content.
<header>...</header>It identifies introductory content more clearly than a generic div.
A page-level header may be exposed as a banner landmark.
Accessible form example
Labels, input types, required attributes and helpful messages make the form easier to understand and validate.
<article>
<h2>Semantic HTML</h2>
<section aria-labelledby="benefits-title">
<h3 id="benefits-title">Benefits</h3>
<p>Meaningful elements improve structure.</p>
</section>
</article>
I learned that HTML is not only a collection of containers. Choosing the right element communicates the purpose of content before visual styling is applied.
Presentation and responsive layout
CSS controls visual presentation while keeping design rules separate from the page’s semantic structure.
CSS stands for Cascading Style Sheets. A selector targets elements, and declarations pair properties with values. Classes create reusable patterns, while IDs should normally identify one unique element. When rules conflict, the cascade considers origin, importance, specificity and source order. Some values, such as text colour and font family, can be inherited by descendants.
The box model treats every element as content surrounded by padding, border and margin. Flexbox is useful for arranging items in one main direction, while Grid controls rows and columns. Media queries adapt those layouts at different viewport widths. Transitions can communicate state changes, but they should remain subtle and respect a user’s reduced-motion preference.
Working demonstration · Box Model
Select a layer to inspect its dimensions, color representation, and active styling properties.
Content: the text, image or other material inside the element.
/* Box Model: Content layer */
.box-content {
width: 100%;
min-height: 5.5rem;
padding: 1.25rem;
border-style: solid;
background: rgba(0, 247, 255, 0.2); /* Hex: #00F7FF */
border-radius: 4px;
}
I learned to treat CSS as a reusable system rather than a list of isolated declarations. The box model coordinates spacing, borders, and margins to build clean, predictable layouts.
Frameworks and reusable components
Bootstrap provides a tested responsive grid, utility classes and interactive components that can speed up interface development.
Bootstrap is a front-end framework containing ready-made CSS classes and JavaScript components. Its grid uses containers, rows and columns. Breakpoint prefixes such as md and lg apply rules only from a specified viewport width. Utility classes provide focused changes for spacing, display, alignment and other common needs.
Components such as navbars, alerts, accordions and modals include established structure and behaviour. Bootstrap’s JavaScript bundle controls interactions such as collapsing and opening. The framework improves speed and consistency, but it does not replace semantic HTML, accessibility testing or design judgement. A site can look generic if the defaults are not customised, and unused framework code may add more CSS than a small project needs.
Working demonstration · Bootstrap 5
The controls below use genuine Bootstrap grid, utility and JavaScript component classes.
Native elements create a meaningful foundation for every Bootstrap component.
Breakpoint classes change the number of columns without a separate custom media query.
Classes such as p-4, g-4 and h-100 apply predictable single-purpose styles.
col-12 fills the row on all screen sizes. col-md-6 uses half of the row from the medium breakpoint, and col-lg-4 uses one third from the large breakpoint.mt-4 adds top margin and d-none changes display.<div class="row g-4">
<div class="col-12 col-md-6 col-lg-4">
<article class="card h-100">...</article>
</div>
</div>
I learned that Bootstrap is most useful when I understand the HTML and CSS underneath it. I can use the framework for predictable behaviour while retaining control of the project’s identity.
Logic, events and DOM updates
JavaScript turns a static document into an application that can react to input, manage state and update the page.
JavaScript stores values in variables using const when a binding should not be reassigned and let when it must change. Values have data types, including strings, numbers, booleans, arrays and objects. Functions group reusable logic, parameters receive values, and return statements send results back. Conditions choose between paths, while loops and array methods process collections.
In a browser, JavaScript can select elements from the DOM and listen for events such as submit or click. It can validate input, update text, create elements and change classes. The task manager below keeps its application data in an array of objects, filters that array to decide what to display, and stores a JSON version in localStorage so tasks survive a refresh.
Working demonstration · vanilla JavaScript
Add, complete, filter and delete tasks. The list is saved in this browser using localStorage.
Add a task or choose another filter.
const task = {
id: crypto.randomUUID(),
text: taskInput.value.trim(),
category: categoryInput.value,
completed: false
};
tasks = [...tasks, task];
saveTasks();
renderTasks();
This application showed me why data and interface rendering should be separated. Changing the array first makes filtering, persistence and DOM updates more predictable.