
Good Scripting and Programming Practices |:| Testing Methods and Activities
Write Mathematical Equations in HTML Pages
MathJax is JavaScript display engine for mathematics that works in all browsers. MathML is an XML-based language for describing mathematical notation. AsciiMath is an easy-to-write markup language for mathematics. LaTeX and TeX are another notation system for mathematical equations in HTML pages. Some example scripts for MathML is given below. xmlns="http://www.w3.org/1998/Math/MathML" needs to be added to <math> tag.<mrow> <munderover> <mo>Σ</mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mrow><mo>+</mo><mn>∞</mn> </mrow></munderover> <mfrac><mn>1</mn><msup><mi>n</mi><mn>2</mn></msup></mfrac> </mrow>
<mrow>
<munderover><mi>∫</mi><mn>-π</mn><mn>+π</mn></munderover>
<mrow>
<mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo> <mi>d</mi><mi>x</mi>
</mrow>
</mrow>

Ref: aws.amazon.com/what-is/sdlc - "The software development lifecycle (SDLC) is the cost-effective and time-efficient process that development teams use to design and build high-quality software. The goal of SDLC is to minimize project risks through forward planning so that software meets customer expectations during production and beyond. This methodology outlines a series of steps that divide the software development process into tasks you can assign, complete, and measure."
Software Engineering Concepts, Idioms and Terms
Traditional software is native meaning it is compiled for and installed on a specific operating system like Windows or Linux. Web apps are hosted on a remote server and accessed through the internet. Web App: An application program on a server that is delivered or can be accessed only through browsers. Data Structures: Specialized formats, such as arrays, trees, and hash tables, used to organize, store, and manage data efficiently. Alpha testing: The testing that occurs within a software development team or company. Beta testing: The testing that happens using client or selected end users. Metric: The measure of whether a product feature or task is quantifiable or countable. Archival database: An historical copy of a database saved at a significant point in time for use in recovery or restoration of the database. Bootstrap: A short computer program that is permanently resident or easily loaded into a computer and whose execution brings a larger program, such an operating system or its loader, into memory. Truth table: A table that describes a logic function by listing all possible combinations of input values, and indicating, for each combination, the output value. Code audit, code inspection, code review and code walkthrough: testing and approval steps or process of codes.
A playbook is a standardized, step-by-step guide or blueprint for building, deploying, and/or operating the software. A rollback is the process of reverting an application, database, or system to a previous, stable state. Technical debt refers to the future costs associated with relying on shortcuts or suboptimal decisions made during software development. Refactoring in web app development means restructuring existing code to improve its readability, and maintainability without changing its external behaviour and features. Code smells refer to duplicated code, deep nesting, excessively long functions, long Parameter lists or overly complex logic - though it is not a bug or a syntax error - the app will likely still run and function as intended. Smoke testing is a quick check that confirms whether a new software build works well enough for extensive testing. In the context of AWS web app deployment, artifacts are the compiled code, packages, or configuration files produced during the build process that are then deployed to a runtime environment.As per article paloaltonetworks.com/cyberpedia/sandboxing: "Sandboxing is a security control that isolates the execution of untrusted or potentially malicious code in a tightly controlled environment. It allows systems to evaluate, test, or execute files, scripts, or processes without exposing the host or network to compromise. The core principle is containment: any process running in the sandbox can’t interact with the underlying system or escape its designated boundaries. In cloud-native environments, sandboxing is not a security afterthought — it is foundational. Sandboxing provides the execution boundaries necessary to run untrusted or partially trusted code without compromising adjacent systems or infrastructure."
Monolithic architecture is a single, unified unit, making it ideal for small, simple applications with fast initial development. Microservices consist of small, independent services, offering high scalability, agility, and flexibility for complex, large-scale applications.
| Front-End | Back-end | Full Stack |
| Topic dealing with user interface, what the end user see and interact with | Deals with methods required to create, maintain and provide data needed for Front End | Deals with both Front End and the Back End technologies |
| Mainly programmed in HTML, CSS, JavaScript, PHP | Deals with databases and server-side scripting: PHP, ASPX, SQL, JSON, Angular, ReactJS | In addition to Front End and Back-end, the developers have to deal with servers (ports, networks, web-hosting), data security and database management. MongoDB, NodeJS, PHP, Python |
Reference figma.com/resource-library/what-is-wireframing: "Wireframe is the skeleton of your app, website, or other final product. Your wireframe shows the design team and stakeholders the bare-bones outlines of essential webpages, components, and features, including Screen layouts, Navigation bars, Components of UX and UI design and Interactive elements."
The wireframe can be just hand drawn or real-looking drawings created using Figma, Visily or many other drag and drop builders.
Interview questions for UI designers:
A simple approach could be to use PowerPoint with standard shapes which can be moved easily.
As per figma.com/resource-library/what-is-a-sequence-diagram: "A sequence diagram is a type of UML (Unified Modeling Language) diagram that maps out how users and systems interact over time. It is commonly used in interaction design and human-computer interaction studies to show what happens, when, and between which parts of a system."


Inputs Required
| Input Type | Description / What to Collect | Example Artefacts |
| Project Objectives | Define the purpose and expected outcomes | Increase visitors, automate workflows |
| Stakeholder List | Identify decision-makers, reviewers, and users | Product owner, IT admin, End-users |
| User Personas | Understand user demographics, and needs | Persona documents, empathy maps |
| Feature List | Define core and optional features | Login, dashboard, reports, charts, user guides |
| User Stories / Use Cases | Describe user interactions with the system | User can upload files, delete tasks |
| Device and Browser Targets | Define supported devices and browsers | Chrome, Safari, mobile/tablet |
| Brand Guidelines | Collect visual identity assets and standards | Logos, colors, typography |
| Content Inventory | Gather required text, media, and documents | Product descriptions, images |
| Accessibility Standards | Define accessibility expectations | Keyboard navigation, colour-blindness support |
| Breakpoint Requirements | Specify layouts for different screen sizes | Desktop, tablet, mobile wireframes |
| Language / Regional Needs | Determine multilingual or regional support | English + Hindi support |
| Scalability Considerations | Capture future enhancements that may affect design | Multi-tenant support, AI features |
Typical Output
| Output Type | Description / What is generated | Examples Artefacts |
| Low-fidelity wireframes: Sitemap / Navigation Structure | Define page hierarchy and navigation flow | Sitemap diagrams |
| High-fidelity mock-ups: Workflow Definitions | Map how users complete tasks | Login/onboarding flow, task creation |
| Design system / UI kit: Screen Inventory | List all screens/pages to be designed | Home, profile, settings, admin panel |
| Responsive layouts: UI Behaviour Details | Define animations, transitions, and interactions | Hover states, modal behaviour |
Summary of Technology Stacks
Node.js is a free, open-source, cross-platform asynchronous event-driven JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts. It is not a programming language or a framework. Node.js uses an event-driven architecture that can handle multiple tasks simultaneously without waiting for one to finish before starting the next. In other words, Node.js as an event-driven architecture handles multiple tasks (like reading files or network requests) at the same time without waiting for one to finish before starting the next. This makes it very efficient for data-intensive tasks. Angular uses TypeScript, a superset of JavaScript, as its primary language and contains a large suite of libraries to build full applications.As per coursera.org/articles/angular-vs-react: "Angular is a comprehensive front-end framework for web applications, while React is a library that allows you to build interactive user interface (UI) components. Both use a component-based architecture, with self-contained, reusable pieces. React mainly deals with UI and client-side development. It is more lightweight and needs other frameworks for an application to complete functions like server-side rendering or data fetching. Angular comes with more pre-built functions, allowing a more structured framework to complete heavier and often more stable development projects."
While JavaScript was originally designed to run only in browsers (the 'client-side'), Node.js allows it to run on servers, making it possible to build full-stack applications using a single programming language. It is built on V8 JavaScript engine of Google Chrome, which compiles code directly into fast machine code.
REST stands for REpresentational State Transfer. It is a type of API (Application Programming Interface) that allows communication between different systems over the internet by sending requests and receiving responses typically in JSON format, between the client (user interface) and server (data and business logic). It is an architectural style for designing networked applications and uses standard HTTP methods (GET, POST, PUT, DELETE) to manipulate resources. REST APIs are stateless, meaning each request contains all the information needed to process it.
Django is a Full-stack web development framework that facilitates the creation and maintenance of high-quality dynamic pages and makes it easier to automate repeated operations. Middleware in the back-end is a software layer—often called "glue code" — that sits between the front-end (user interface) and back-end logic (database/server). Key examples include authentication, logging, data validation, and caching.
Containerization is a form of operating system virtualization where an application and all its necessary files (libraries, configuration files, and dependencies) are bundled together into a single, isolated, and executable unit called a container. Docker is a popular open-source platform used to create, deploy, and manage these containerized applications. Thus, Docker acts as an operating system for containers.
Some roles in Software Development
Back-End Developers create server-side logic, database management, and API integration, ensuring security and functionality using languages like PHP, Python, Java, or Node.js. Web Designers focus on the visual aspects, layout, and usability of the website, often handling graphic design and UI/UX elements.
As per aws.amazon.com/what-is/architecture-diagramming: "Architecture diagramming is the process of creating visual representations of software system components. In a software system, the term architecture refers to various functions, their implementations, and their interactions with each other. As software is inherently abstract, architecture diagrams visually illustrate the various data movements within the system. They also highlight how the software interacts with the environment around it."
Software Architect
For this role deep, hands-on coding in React.js and Node.js is not strictly necessary yet understanding their architectural patterns, ecosystems, and limitations is highly beneficial. Knowing React helps communicate effectively with frontend engineers, understand their constraints, and make realistic technology decisions. Software architects are senior developers or programmers with degree in either of "computer science or information systems or software engineering" who formulate the high-level structure of a software, manages technical teams, and enforces coding standards for software development projects.Interview questions for Software Architects:

Many a time architecture diagram and High Level Design (HLD) are used interchangeably though they are not same. Architecture Diagram answers "What major systems exist and how they connect?" High-Level Design answers "How the application is organized and works internally?"
Architecture Diagram (Structural | High Level Design (Functional ```````````````````` Blueprint) | ````````````````` Blueprint) Users | User Management Module ! | ! Load Balancer | Project Management Module ! | ! Web Server (React) | Input Forms Module ! | ! API Gateway | File Upload Module ! | ! Node.js (Backend) | Dashboard Module ! | ! ,---------------------, | Reporting Module ! ! | ! Database File Storage | Review Module (PostgreSQL) (AWS S3) | ! ! | User Guide Module External Services | ! (Payment, Email) | Tech Support Module
Low-Level Design (LLD) diagram describes implementation details of a single component whereas architecture diagram represents the macro-level representation of the entire web application. Architecture diagram represents the design of a multi-storied building, while the LLD diagram is the detailed blueprint for the electrical wiring and plumbings inside a single floor. Architecture diagram is used by Business Analysts and Product Managers whereas LLD is used by developers and QA engineers.
Choosing between centralized data storage and domain-specific databases, team structure, deployment pipelines, and ownership boundaries are activities under the HLD umbrella. Low-level design defines how a service validates input, interacts with its database, and what caching strategies to follow.
A cloud server is a virtualized server that runs in the cloud on infrastructure owned by a cloud service provider. A serverless architecture is a way to build and run applications and services without having to manage infrastructure. Your application still runs on servers, but all the server management is done by AWS. You no longer have to provision, scale, and maintain servers to run your applications, databases, and storage systems.Swimlane Diagram: A type of flow chart which map out the entire process of creating a website, illustrating the sequential tasks and responsibilities of different teams involved.

A Mermaid diagram is a visual chart or diagram generated entirely from plain text. It is a JavaScript based diagramming and charting tool that uses Markdown-inspired text definitions and a renderer to create and modify complex diagrams. Instead of manually dragging and dropping shapes in a visual editor, you simply type the code, and a text editor or platform automatically renders it into a polished graphic.




An interface is the point where a user or another system interacts with the application. There are mainly two types: User Interface (UI) - This is what users see and interact with, System Interface (API Interface) - This is how systems communicate with each other. Integration means connecting the web app with other systems, tools, or services so data and functionality can flow between them. Common Web App Integrations: Authentication Integration such as SSO, Cloud Storage Integration which connect with AWS S3, Reporting / Analytics Integration which may connect with Power BI / Tableau, External Tool Integration such as CAD software and Optimization engine.

Key responsibilities of an architect include selecting "technology stacks, appropriate frameworks, tools, and databases" to meet technical needs. Guide developers, conduct code and architecture reviews in order to ensure the final product meets established standards. Remain engaged in every step of the software development life cycle (SDLC) and performs regular code inspections to ensure the product meets quality standards within planned cost and schedule. High-Level Design (HLD): Defines system architecture, technology stack, database design, and major modules. Low-Level Design (LLD): Specifies component logic, APIs, data structures, and workflows. Reference architecture diagrams published by AWS is attached here.
Other roles include Solution architects, Enterprise architects, Data architects and Cloud architects. Front-End Developers create the user-facing, interactive, and visual elements of websites and applications using HTML, CSS, and JavaScript. They collaborate with designers and back-end engineers to ensure responsive, accessible, and high-performance interfaces utilizing modern frameworks like Bootstrap, React, Angular, or Vue. Write clean, maintainable, and well-documented code, integrate APIs and maintain web standards. Require to have basic graphic design skills such as Photoshop, Figma, or Sketch.
Job titles are based on overall relevant experience as well as size of the company: Junior Developer is designation for entry-level (0 ~ 3 years experience), Mid-Level Developer is used for practitioner level developers (2 ~ 5 years), Senior Developer (5 ~ 10 years) designation is given to those with high-level of expertise, mentoring, and architectural decisions - multitasking programmers who master many programming and scripting languages and familiar with Content Management Systems (CMS). Lead Developer / Architect (> 10 years) are responsible for the entire team or technical direction - convert the customer’s requirements into technical requirements.
| Aspect | Software Architect | Full-Stack Developer | DevOps Engineer |
| Primary Focus | System design and technical strategy | Building application features end-to-end | Infrastructure, automation, deployment, reliability |
| Main Goal | Create scalable, maintainable architecture | Deliver functional software products | Ensure smooth CI/CD and operational stability |
| Scope | Enterprise/system-wide | Application/module-level | Infrastructure and deployment ecosystem |
| Works Closely With | Business leaders, engineering teams, product managers | UI/UX, backend teams, QA | Developers, QA, cloud/platform teams |
| Key Deliverables | Architecture diagrams, tech standards, solution design | Frontend + backend code | Pipelines, cloud infrastructure, monitoring |
Few questions related to Full-stack developers.

Tasks performed by Full-stack Developers ↴

| Input Required | Description / What Backend Developers Need | Example Artefacts |
| Functional Requirements | Core application behavior and rules | PRD, user stories |
| Access / Permission Matrix | Define user types and allowed actions | Admin vs customer permissions |
| Auth Mechanism | Login, session, token, SSO requirements | JWT, OAuth2, SAML |
| Third-Party Services | External APIs and service dependencies | Payment gateway, CRM APIs |
| Storage Requirements | Database types and file storage needs | PostgreSQL, MongoDB, S3 |
| Async Processing Needs | Scheduled jobs and queue processing | SLURM |
| Analytics & Reporting Needs | Dashboard and export requirements | CSV/PDF exports |
| Upload/Download Requirements | File handling constraints and limits | Image / PDF / CSV service |
Security Architecture for Web App Deployment on AWS


DevOps Engineer
As per learn.microsoft.com/en-us/devops/what-is-devops: "DevOps combines development (Dev) and operations (Ops) to unite people, process, and technology in application planning, development, delivery, and operations. Continuous Integration (CI) is the practice used by development teams to automate, merge, and test code. Continuous Delivery (CD) is a process by which code is built, tested, and deployed to one or more test and production environments."
Dev refers to the software development side: Writing code (features, bug fixes), Designing applications and APIs, Running unit tests, Building new releases. Ops refers to the IT operations and infrastructure side: Deploying applications to servers/cloud, Managing infrastructure (servers, containers, networks), Monitoring system health and uptime, Handling incidents and outages. DevOps is about bridging the gap between Dev and Ops so both work as one team instead of silos. Dev ≡ designing and building the car. Ops ≡ driving, maintaining, and fixing issues on the road. SonarQube is a DevOps tool that facilitates the static code analysis process.Tasks performed by DevOps Engineers ↴

Activities of CI/CD Pipeline on AWS ↴

DevOps Artifacts: These are referenced in a pipeline stage for automated deployment to the target environment. They are used to specify software package versions for deployment. They can be a container image, a generic artifact, helm chart, or they can be defined inline. The artifact source varies depending on the type of artifact.
Environment of CI/CD Pipeline on AWS ↴
Typical AWS Architecture Components


Testing Methods and Activities

Code Testing Activities and Environment on AWS ↴

Excerpts from AWS website: "Smoke testing is a subset of testing that validates the most critical functions of an application work correctly after deployment. These tests focus on key workflows like user login, core navigation, and key transactions rather than exhaustive feature coverage. Smoke tests typically complete in minutes rather than hours, making them ideal for CI/CD pipelines where fast feedback on code changes is essential."
aws.amazon.com/what-is/continuous-testing: "Continuous testing is the process of testing your application at every stage of the software development process and every time that changes are made to application code or configurations. Continuous testing integrates testing in every stage of the software delivery pipeline to catch bugs early and maintain software quality. Software tests are maintained as code alongside the application code and frequently run as part of the continuous testing paradigm."
Static testing is a proactive method of assessing the quality of code without needing to run it. It can be used to test application source code, as well as other design artefacts, documentation, and infrastructure as code (IaC) files. Static testing allows teams to spot misconfigurations, security vulnerabilities, or non-compliance with organizational standards in these components before they get applied in a real environment.
User Acceptance Testing (UAT) is the final phase of testing in web application development where actual business users ( Product Owners, Subject Matter Experts, Customer representatives) and end users verify that the application meets their requirements and is ready for production use. Unlike technical testing (unit testing, integration testing, system testing), UAT focuses on business functionality and user workflows. It serves as the formal approval before the application can go live.
Test coverage is a software quality metric that measures how much of your application's code or functionality is exercised by automated tests. Coverage (%) = Total Testable Items / Items Tested * 100. Line Coverage = Percentage of code lines executed during tests, Statement Coverage = Percentage of executable statements tested, Branch Coverage = Percentage of decision paths (if/else, switch cases) tested and Function Coverage = Percentage of functions/methods called by tests.
Responsibilities of Software Test Engineers ↴
Functional Testing: Understand business and technical requirements. Create test scenarios, test cases, and test data. Execute manual and automated test cases. Functional testing checks whether the software system passes the software requirements outlined before building.
Bug / Defect Management: Identify, log, track, and retest software defects. Work with development teams to resolve issues. Perform root cause analysis for recurring defects.
Automation Testing: Develop and maintain automation scripts. Execute regression and smoke test suites. Improve test coverage using automation tools
Test Planning and Documentation: Prepare test plans and testing strategies. Document test results and quality metrics. Maintain QA documentation and reports.
QA Testing Output Summary Table ↴ is summarize below. A sample list of tests to be conducted on a web app can be found in this Excel file.
| Test Category | Total Test Cases | Passed | Failed | Blocked* | Pass Rate |
| Functional Testing | 15 | 14 | 1 | 0 | 93.3% |
| UI/UX Testing | 12 | 11 | 1 | 0 | 91.7% |
| API Testing | 25 | 20 | 5 | 2 | 80.0% |
| Security Testing | 16 | 12 | 4 | 0 | 75.0% |
| Performance Testing | 20 | 16 | 4 | 1 | 80.0% |
| Compatibility Testing | 11 | 10 | 1 | 0 | 90.9% |
| Regression Testing | 22 | 20 | 2 | 0 | 90.9% |
| User Acceptance Testing | 14 | 12 | 2 | 0 | 85.7% |
Compatibility Testing Output Summary ↴
| Browsers Tested | OS Tested | Screen Resolution | Results / Observation |
| Chrome 144.0, FireFox 136.0, Edge, Safari | Window 11, Ubuntu 24.06, iOS | Laptops and Desktops screen size 13", 15" and 24" | Application compatible across all major browsers and platforms, no major UI rendering issue observed. |
Web Application QA Test Case Table ↴ should be aligned to RTM (Requirement Traceability Matrix), this is sometime also known as Technical Testing. BR = Business Requirement, FR = Functional Requirement. Ensure that each FR has a corresponding development (dev) task and at least one test case. Ensure each feature maps to a deployable AWS/Azure component.
| Test Case ID | Module / Feature | Test Scenario | Preconditions | Test Steps | Expected Result | Status | Tester Name | Test Date |
| TC-LOG-001 | Authentication | Verify login with valid credentials | User account exists | Enter valid username / pw > Click Login | User successfully logs in | Pass | ||
| TC-LOG-002 | Authentication | Verify login with invalid password | User account exists | Enter valid username & invalid pw > Login | Error message displayed | Pass | ||
| TC-LOG-003 | Authentication | Verify empty login fields validation | Login page accessible | Leave username or pw blank > Login | Field validation message displayed | Pass | ||
| TC-REG-001 | Registration | Verify new user registration | Registration page accessible | Enter valid user details > Submit | Account created successfully | Pass | ||
| TC-REG-002 | Registration | Verify duplicate email validation | Existing email available | Enter registered email > Submit | Duplicate email error displayed | Fail | ||
| TC-FGT-001 | Password Reset | Verify forgot pw functionality | Registered email exists | Click Forgot Password > Enter email > Submit | Reset link sent to registered email | Pass | ||
| TC-DSH-001 | Dashboard | Verify dashboard loads after login | Valid login completed | Login successfully | Dashboard page displayed correctly | Pass | ||
| TC-PRF-001 | User Profile | Verify profile update | User logged in | Open profile page > Update profile > Save | Profile updated successfully | Pass | ||
| TC-PRF-002 | User Profile | Verify profile picture upload | User logged in | Upload valid image file > Save | Picture uploaded successfully | Pass | ||
| TC-DAT-001 | Data Management | Verify create record operation | User has create permission | Open create form > Enter valid data > Save | New record created successfully | Pass | ||
| TC-DAT-002 | Data Management | Verify update record operation | Existing record available | Edit existing record > Save changes | Record updated successfully | Pass | ||
| TC-DAT-003 | Data Management | Verify delete record operation | Existing record available | Select record > Click Delete > Confirm | Record deleted successfully | Pass | ||
| TC-API-001 | API | Verify API response status code | API endpoint available | Send GET request to API | Status code 200 returned | Pass | ||
| TC-API-002 | API | Unauthorized access | No authentication token | Access secured API without token | Status code 401 returned | Pass | ||
| TC-SEC-001 | Security | Verify SQL Injection protection | Login form accessible | Enter SQL query in input field > Submit | Application rejects malicious input | Pass | ||
| TC-SEC-002 | Security | Verify XSS protection | Form input field available | Enter script tag in text field > Submit | Script execution blocked | Pass | ||
| TC-PRF-001 | Performance | Verify application under heavy traffic | Performance env. configured | Simulate concurrent users | Application remains stable | Pass | ||
| TC-CMP-001 | Compatibility | Verify application on Chrome | Chrome installed | Open application in Chrome | UI and functionality work correctly | Pass | ||
| TC-CMP-002 | Compatibility | Verify application on mobile device | Mobile device available | Open application on mobile browser | Responsive layout displayed correctly | Pass | ||
| TC-LOG-001 | Authentication | Verify logout functionality | User logged in | Click Logout | Session terminated successfully | Fail |
The test case column can be shortened by removing "Module / Feature" column as it is already built into the test case ID. Test cases for a dashboard module can be as shown below.
| Test Case ID | Test Scenario | Preconditions | Expected Result |
| TC-DSH-001 | Dashboard page loads successfully | User logged in | Dashboard loads without errors within specified response time |
| TC-DSH-002 | Role-based dashboard access | Users with Admin, Manager, and User roles exist | Each role sees only authorized dashboard sections and widgets |
| TC-DSH-003 | Verify dashboard widgets display correctly | Dashboard configured with widgets | All configured widgets display correctly with proper labels |
| TC-DSH-004 | Verify dashboard data accuracy | Dashboard connected to backend database | Values match backend data |
| TC-DSH-005 | Verify charts and graphs render correctly | Dashboard contains charts | Charts render correctly with accurate labels, legends, and values |
| TC-DSH-006 | Verify dashboard refresh functionality | Dashboard contains dynamic data | Latest data displayed without page errors |
| TC-DSH-007 | Verify filtering options | Filters available | Data updates according to selected filter criteria |
| TC-DSH-008 | Verify breadcrumb navigation | Breadcrumbs available | Breadcrumb path displayed correctly and links work |
| TC-DSH-009 | Verify sorting of dashboard data | Sortable tables available | Data sorted ascending/descending correctly |
| TC-DSH-010 | Verify responsive design | Application deployed | Layout adjusts correctly without overlapping components |
| TC-DSH-011 | Verify dashboard loading performance | Production-like environment | Dashboard loads within SLA (e.g. < 5 seconds) |
| TC-DSH-012 | Verify export functionality | Export feature enabled | File generated successfully with accurate data |
| TC-DSH-013 | Verify error handling when data source unavailable | Ability to simulate back-end outage | User-friendly error message displayed; application remains stable |
Flowchart to identify Code Smells in a Web App Development project ↴

Final QA Sign-off ↴
| Item | Status | Reviewed By | Approved By |
| Functional Readiness | Approved | ABC | XYZ |
| Security Readiness | Approved with observations | ABC | XYZ |
| Performance Readiness | Approved with observations | ABC | XYZ |
| Production Deployment Recommendation | Yes, post-deployment smoke testing | PQR | LMN |
| User Training, Knowledge Transfer | Completed | PQR | LMN |
| User and Coding Documentation | Completed | PQR | LMN |
| Support Period | 3 months | UVW | EFG |
| Warranty Period | 6 months | UVW | RST |
| Agile/Scrum Project Closure | Yes | UVW | RST |
| Go-Live Sign-off | Yes | UVW | RST |
List of Phase-wise Handover Documents can be found in this file..
Agile Development Hierarchy
It is typically structured as Initiatives > Epics > User Stories > Tasks. Functional Team Structure: Product Owner (Defines the product vision, manages the backlog, and prioritizes work) > Scrum Master (Facilitates processes, removes impediments, and ensures Agile practices are followed) > Development Team (Cross-functional members namely designers, engineers, testers who build the product).
Product Manager: decides what product to build and why (strategy). Product Owner: ensures it gets built correctly (execution). Analogy: Product Manager ≡ Architect (designs the building), Product Owner ≡ Site Manager (ensures it is built correctly).Comparative Flowchart for Waterfall vs Agile Approach for Web App Development ↴. An example scrum sprint can be found here.


Refer to this page for information to be put in a job description. The behavioural aspects of a candidate can be assessed though these questions. Use this page to create Job Description and save in CSV format. An spreadsheet template with appropriate drop-downs to create a summary of JD for hiring new members can be downloaded from here. It contains defined names for drop-downs in a separate sheet which can be updated / edited as per one's needs.
Click the tabs below to get sample job descriptions.
| Job Title | Software Architect | Job Type | Full-time |
| Cost Center | CC01 | Section Name | SH01 |
| Job Code | CC01_SH01_SA | Reports To | Delivery Head |
| Work Location | Patna | Number of Openings | 2 |
| Minimum Experience (years) | 5.0 | Maximum Experience (years) | 8.0 |
| Education Qualification | B. Tech. | Engineering Discipline | Computer Science |
| Description of role | Make high-level design choices, set technical standards, present technical concepts, and define the overall structure of software systems. Act as a bridge between business requirements and technical solutions by deciding on tools, platforms, and architecture to ensure expected performance | ||
| Responsibilities | Create the outline for software defining components, interfaces, and their interactions. Selecting tech stacks, define coding standards, and address non-functional requirements like security and performance. Mentor developers and conduct code reviews to ensure the architectural decisions are implemented. Identify potential technical issues early and plan mitigations. | ||
| Technical Skills Required with % weight | (a) Experience in React front end programming - 25%, (b) Knowledge of concurrent execution, distributed computing and parallel processing - 25%, (c) Cloud-Native Architecture - 25% and (d) Security best practices - 25% | ||
| Domain Skills Required with % weight | (i) Software development lifecycle (SDLC) - 25%, (ii) Knowledge of UI/UX principles - 25%, (iii) Expertise in system design and cloud platforms with strong coding and problem-solving skills - 50% | ||
| Communication and Office suites or Productivity software | Extensive experience in preparing business proposal using MS-Word or LibreOffice Write with knowledge of advance formatting features, Hand-on experience in preparing high quality engaging presentations using MS PowerPoint or LibreOffice Impress, Know-how about advanced features in MS-Excel or LibreOffice Calc such as Filtering, Pivot Tables, Conditional Formatting, Data Validation and Scientific Charting | ||
| Keywords and Tool Names | Software Architecture, Python, React.js, Node.js, Automation Scripting, REST API, CI/CD - Jenkins, Flask, SQL, AWS hosting, Kubernetes/Docker, JIRA, SCRUM | ||
| Job Title | Full Stack Developer | Job Type | Full-time |
| Cost Center | CC01 | Section Name | SH02 |
| Job Code | CC01_SH02_FS | Reports To | Delivery Head |
| Work Location | Patna | Number of Openings | 3 |
| Minimum Experience (years) | 6.0 | Maximum Experience (years) | 9.0 |
| Education Qualification | B. Tech. | Engineering Discipline | Computer Science |
| Description of role | Software engineer proficient in both front-end (client-side) and back-end (server-side) development, managing the entire application lifecycle from user interface design to database management, APIs, and server configuration | ||
| Responsibilities | Create user-friendly and responsive interfaces using HTML, CSS, and JavaScript frameworks. Write server-side logic, maintain application performance, and build robust APIs using languages like Node.js. Database Management: Designing, developing, and managing databases (SQL or NoSQL) to store and retrieve data efficiently. API Integration: Develop and integrate third-party services and APIs to enhance functionality. Collaborate with product managers, business analysts, and other stakeholders to gather requirements and translate them into technical specifications. erform unit testing, debugging, and troubleshooting to identify and resolve software defects and performance bottlenecks. | ||
| Technical Skills Required with % weight | (a) Understanding of front-end frameworks, with a primary emphasis on React.js and knowledge of other libraries or frameworks such as Bootstrap, jQuery - 40%, (b) Familiarity with back-end frameworks and libraries, notably Node.js - 40%, (c) Experience deploying and managing applications using AWS Lambda and related server-less tools - 20% | ||
| Domain Skills Required with % weight | (i) Software development lifecycle (SDLC) - 25%, (ii) Knowledge of UI/UX principles - 25%, (iii) Expertise in system design and cloud platforms with strong coding and problem-solving skills - 50% | ||
| Communication and Office suites or Productivity software | Extensive experience in preparing business proposal using MS-Word or LibreOffice Write with knowledge of advance formatting features, Hand-on experience in preparing high quality engaging presentations using MS PowerPoint or LibreOffice Impress, Know-how about advanced features in MS-Excel or LibreOffice Calc such as Filtering, Pivot Tables, Conditional Formatting, Data Validation and Scientific Charting | ||
| Keywords and Tool Names | JavaScript (React.js, Node.js), Python, Java, PHP, HTML/CSS, MySQL, MongoDB, PostgreSQL, JIRA, SCRUM | ||
| Job Title | DevOps Engineer | Job Type | Full-time |
| Cost Center | CC02 | Section Name | SH03 |
| Job Code | CC02_SH03_DO | Reports To | Delivery Head |
| Work Location | Noida | Number of Openings | 1 |
| Minimum Experience (years) | 5.0 | Maximum Experience (years) | 8.0 |
| Education Qualification | B. Tech. | Engineering Discipline | Computer Science |
| Description of role | DevOps Engineer acts as a bridge between software development and IT operations to automate, streamline, and optimize software delivery. | ||
| Responsibilities | Create the outline for software defining components, interfaces, and their interactions. Selecting tech stacks, define coding standards, and address non-functional requirements like security and performance. Mentor developers and conduct code reviews to ensure the architectural decisions are implemented. Identify potential technical issues early and plan mitigations. | ||
| Technical Skills Required with % weight | (a) Experience with cloud platforms (AWS) - 25%, (b) CI/CD tools (Jenkins, GitHub Actions) - 25%, (c) Containerization (Docker, Kubernetes) - 25% and (d) Security best practices - 25% | ||
| Domain Skills Required with % weight | (i) Software development lifecycle (SDLC) - 25%, (ii) Understanding of basic networking concepts - 25%, (iii) Familiarity with monitoring and logging tools - 25%, (iv) Web and Internet Technologies - 10%, (v) Experience with installing, configuring, and maintaining local services (daemons) - 15% | ||
| Communication and Office suites or Productivity software | Extensive experience in preparing business proposal using MS-Word or LibreOffice Write with knowledge of advance formatting features, Hand-on experience in preparing high quality engaging presentations using MS PowerPoint or LibreOffice Impress, Know-how about advanced features in MS-Excel or LibreOffice Calc such as Filtering, Pivot Tables, Conditional Formatting, Data Validation and Scientific Charting | ||
| Keywords and Tool Names | Python, Automation Scripting, CI/CD - Jenkins, Flask, SQL, AWS hosting, Kubernetes/Docker, Linux/Bash, PowerShell, JIRA, SCRUM | ||
| Job Title | Data Scientist | Job Type | Full-time |
| Cost Center | CC03 | Section Name | SH05 |
| Job Code | CC03_SH05_DS | Reports To | Delivery Head |
| Work Location | Gurgaon | Number of Openings | 2 |
| Minimum Experience (years) | 5.0 | Maximum Experience (years) | 8.0 |
| Education Qualification | M. Sc. | Engineering Discipline | Applied Maths |
| Description of role | Analyse complex, structured, and unstructured data to extract actionable insights, building predictive models and machine learning algorithms to solve business problems. | ||
| Responsibilities | Collecting, cleaning, and preprocessing large datasets to ensure data quality, uniformity, and reliability. Translating data insights into actionable strategies for stakeholders. Utilizing programming languages (Python, R, SQL) and data frameworks (Hadoop, Spark) to analyse, visualize, and report data. | ||
| Technical Skills Required with % weight | (a) Experience in R/Python programming - 25%, (b) Data science - 25%, (c) Data mining - 25% and (d) Machine Learning - 25% | ||
| Domain Skills Required with % weight | (i) Machine learning frameworks - 50%, (ii) Data mining, predictive modeling, and algorithm development - 25%, (iii) Hands on experience in data visualization tools such as Power BI - 25% | ||
| Communication and Office suites or Productivity software | Extensive experience in preparing business proposal using MS-Word or LibreOffice Write with knowledge of advance formatting features, Hand-on experience in preparing high quality engaging presentations using MS PowerPoint or LibreOffice Impress, Know-how about advanced features in MS-Excel or LibreOffice Calc such as Filtering, Pivot Tables, Conditional Formatting, Data Validation and Scientific Charting | ||
| Keywords and Tool Names | PowerBI, Python, Scikit-Learn, Numpy/Pandas, SQL, AWS hosting, JIRA, SCRUM | ||
| Job Title | UI Designer | Job Type | Full-time |
| Cost Center | CC01 | Section Name | SH01 |
| Job Code | CC01_SH01_SA | Reports To | Delivery Head |
| Work Location | Noida | Number of Openings | 3 |
| Minimum Experience (years) | 3.0 | Maximum Experience (years) | 8.0 |
| Education Qualification | B. Tech. | Engineering Discipline | Graphic Design, IT Engg |
| Description of role | Creative and detail-oriented Web Application UI Designer to design intuitive, visually appealing, and user-centric web application interfaces. The role requires close collaboration with Product Owners, UX Designers, Developers, and Business Stakeholders to transform business requirements into engaging and functional user interfaces. | ||
| Responsibilities | Create low-fidelity wireframes, high-fidelity mock-ups, design systems, and high-fidelity prototypes that deliver exceptional user experiences while maintaining consistency across the application. Translate business requirements and user needs into effective design solutions. Ensure designs align with usability and accessibility standards. Create user flows, journey maps, and screen navigation diagrams. Review implemented interfaces to ensure design accuracy. Support front-end teams during implementation and testing. | ||
| Technical Skills Required with % weight | (a) Responsive web design, Visual hierarchy and layout design, Typography and colour theory - 25%, (b) Familiarity with front-end development constraints and best practices - 25%, (c) Data visualization and dashboard design - 25%, (d) Ability to handle multiple projects and deadlines - 15% and (d) Experience working in Agile/Scrum environments - 10% | ||
| Domain Skills Required with % weight | (i) Software development lifecycle (SDLC) - 25%, (ii) Understanding user personas and user journey mapping - 25% (iii) Ability to understand business workflows and map business requirements to screens and interactions - 50% | ||
| Communication and Office suites or Productivity software | Extensive experience in preparing business proposal using MS-Word or LibreOffice Write with knowledge of advance formatting features, Hand-on experience in preparing high quality engaging presentations using MS PowerPoint or LibreOffice Impress | ||
| Keywords and Tool Names | Figma, Sketch, Canva, SCRUM | ||
Data Engineering is the discipline of designing, building, and maintaining systems that collect, process, and move data. Users are called Data Engineers. Data Warehousing is about storing structured data in a way that enables fast querying, reporting, and analytics. Users are called (Data) Analysts and BI (Business Intelligence) teams.
This Excel file can be used to track JD and hiring progress.
Example Swimlane Diagram for Ticketing: reference mockflow.com/blog/swimlane-diagram

WAMP stands for Windows, Apache, MySQL, and anyone of PHP, Perl, or Python. LAMP is equivalent set for Linux. WAMP server is a local web server for running the scripting language (PHP, Perl) and this is open source. XAMPP stands for Cross-Platform (X), Apache (A), Maria DB (M), PHP (P), and Perl (P). It is developed by Apache Friends. It includes Apache and MySQL, FileZilla, Mercury, Tomcat, and Maria DB.
Javascript is loosely typed. A variable can contain all data types and a variable can change its data type. Strings created with single or double quotes work the same. Use quotes inside a string, as long as they don't match the quotes surrounding the string. Hoisting is JavaScript's default behavior of moving declarations to the top. In JavaScript, a variable can be declared after it has been used. JavaScript modules allows to break up code into separate file which makes it easier to maintain a code-base. Like Python, with the 'import' statement. 'modules' are imported from external files with the 'import' statement.
document.addEventListener("click", func_name);
function func_name() {
document.getElementById("demo") .innerHTML = "Demo";
}
≡
document. addEventListener("click", function(){
document.getElementById("demo") .innerHTML = "Demo";
}
Select a column from a table on the webpage: No direct method exist though some add-on to web-browsers do exist. Select that table and paste in a text file or a spreadsheet. Use Python with CSV or Pandas modules. Paste the data in MS-Word which allows selecting particular column with mouse drag. For creating a table where columns can be selected, create a nested table. Outer table with only one 'tr' and 'td' tags. Each column as inner 'table' with single 'td' and desired number of 'tr' tags.
The Window object is the top level object in the JavaScript hierarchy and represents a browser window. It is created automatically with every instance of a 'body' or 'frameset' tag.
| DOM Object | Event Handlers Available |
| Checkbox, Radio / Reset / Submit button | onClick |
| Button element | onClick, onMouseOver |
| Hypertext link, Clickable ImageMap | onClick, onMouseOver, onMouseOut |
| Document | onLoad, onUnload, onError |
| Form | onSubmit, onReset |
| Framesets | onBlur, onFocus |
| Selection list | onBlur, onFocus, onChange |
| Image | onLoad, onError, onAbort |
| Text and TextArea element | onBlur, onChange, onFocus, onSelect |
| Window | onLoad, onUnload, onBlur, onFocus |
JavaScript Objects
| Property | Description |
| closed | Returns whether or not a window has been closed |
| defaultStatus | Sets or returns the default text in the statusbar of the window |
| document | Returns the entire HTML document |
| history | a JavaScript object, not an HTML DOM object, part of the Window object and is accessed through the window.history property |
| length | Sets or returns the number of frames in the window |
| location | See Location object |
| name | Sets or returns the name of the window |
| opener | Returns a reference to the window that created the window |
| outerHeight | Sets or returns the outer height of a window |
| outerWidth | Sets or returns the outer width of a window |
| pageXOffset | Sets or returns the X position of the current page in relation to upper left corner of a window's display area |
| pageYOffset | Sets or returns the Y position of the current page in relation to upper left corner of a window's display area |
| parent | Returns the parent window |
| personalb | Sets whether or not the browser's personal bar (or directories bar) should be visible |
| scrollbars | Sets whether or not the scrollbars should be visible |
| self | Returns a reference to the current window |
| status | Sets the text in the status bar of a window |
| statusbar | Sets whether or not the browser's status bar should be visible |
| toolbar | Sets whether or not the browser's tool bar is visible or not |
| top | Returns the topmost ancestor window |
JSON: Javascript Object Notation
A JSON array is equivalent to list in Python and a JSON object is similar to dictionary in Python. Python has standard JSON module where it is parsed using json.loads() method resulting in Python dictionary. A Python dictionary object can be converted into a JSON string using the json.dump() method.PHP is white space insensitive, case-sensitive, statements are terminated by semicolons, variables start with $, constants created by define() function e.g. define("pi", 3.1416), {...} create blocks - a sequence of multiple statements (concatenation of statements). Unlike with variables, constant does not need to start with a $. Logical operators uses both ('and' &&), ('or' '||'). Loop uses parentheses for logical argument: if () ... elseif () ... else ... Single-line comments: # or //. */ .... /* is used for multiline comments. PHP Magic constants: __LINE__, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, $_POST (is a PHP super global variable which is used to collect form data after submitting an HTML form with method = "post").
The double arrow operator '=>' is used as an access mechanism for arrays. => is used in associative array key/value pairs for assignment that is => is used to assign values to the keys of an array. PHP is a server side language: nothing inside the "<?php ... ?>;" blocks will ever be visible in the browser. User names and passwords are required to connect to various databases. They are secure so long they remain inside PHP tags. include_once( "../../sub-folder-x/connect_mysqli.php"); can be used to avoid keeping connect_mysqli.php file into sub-folders along with index.php file.
PHP-enabled web pages are treated just like regular HTML pages and they can be created / edited the same way as normally done for regular HTML pages. Codes can jump in and out of PHP mode even in the middle of a PHP block while the logical flow of the script remains intact. This is similar to how image and equations can be put inline with text in a MS-Word file or how PERL scripts are used in CCL (CFX Command Language). PHP code can be embedded in the middle of an HTML opening tag. Instead of using PHP echo statement, one can jump out of PHP mode and just sent straight HTML. The PHP parser doesn't care that it is in the middle of an opening tag, and doesn't require that it (HTML tag) be closed. It also allows the cases where the closing ?> tag is at the end of the HTML opening tag, just before > of HTML tag.
<?php if ($expression == true): ?> Show if the expression is true. <?php else: ?> Otherwise show this. <?php endif; ?>Similarly, following code shall print "Hello, there!" 4 times.
<?php for ($i = 0; $i < 5; ++$i): ?> Hello, there! <?php endfor; ?>Tag "<?=" is shorthand for "<? php echo". The super global variable $_SERVER["PHP_SELF"] returns the filename of the currently executing script. The htmlspecialchars() function converts special characters like < and > to '<' and '>' which prevents Cross-Site Scripting attacks. Use stripslashes() and preg_match('/^[a-zA-Z0-9]+$/', $username) functions for additional sanitization of user inputs. Regular expression '/^[a-zA-Z0-9_.]+$/' can be used to allow underscore and dot. $_SERVER["PHP_SELF"] exploits can be avoided by using the htmlspecialchars() function. if ($_SERVER["REQUEST_METHOD"] == "POST") { .. } checks the method used to submit a form. Prepared Statements and Bound Parameters are useful against SQL injections.
Error Reporting and Debugging: Quite often while running a PHP script, one gets a blank screen, no error message but just the empty screen. The reason might be syntax error, failed function call, or something else. One need to turn on the error display options. Use "sudo find /etc -name php.ini -type f" to find the location of php.ini file (something like /etc/php/7.4/apache2/php.ini) and set "display_errors = On" in the file. The location (path) of php.ini file can also be looked into the output generated through phpinfo(); function. php.ini: update line "mysqli.default_user =" to mysqli.default_user = "root". Some programs may access fields such as $username = ini_get("mysql.default_user"); $passwd = ini_get("mysql.default_password");
Depending on which files user developer has access to, it may be needed to configure display_errors in .htaccess or PHP.ini file. Many hosting providers do not allow modification to PHP.ini file. In production version of codes, error messages must not be shown to the end users, yet information must be recorded for tracing purposes. The common way to record error messages in production environment is to store it in log files.
When working with PHP and AJAX calls, errors is difficult to track as they do not get displayed in the browser rather they are returned to the AJAX request.The @ symbol, when placed before an expression, acts as an error control operator. When used with 'include' or 'require' statements, it suppresses error messages that would get generated if the included file cannot be found or if there is an issue during its inclusion.
"Notice: Undefined index" occurs when attempting to access an array key that does not exist within the array. This is a common warning, not a fatal error, but it indicates a potential issue in the code where an expected array key is missing. Use error_reporting(E_ALL & ~E_NOTICE); to suppress the warning (notice) messages.debug_backtrace() generates a PHP backtrace, Returns an array of associative arrays. When an error occurs, debug_backtrace() can identify the exact function or method call that triggered it. debug_print_backtrace() prints a PHP backtrace. It prints the function calls, included/required files and eval()ed stuff. No value is returned.
User Defined Functions in PHP:
A function is defined using the function keyword, a name, a list of parameters (which might be empty) separated by commas (,) enclosed in parentheses, followed by the body of the function enclosed in curly braces. Functions need not be defined before they are referenced, except when a function is conditionally defined. By default, function arguments are passed by value (so that if the value of the argument within the function is changed, it does not get changed outside of the function).<?php
$x = 5.0;
echo nl2br("$x \n"); // Output: 5
function sqr($x) {
$x = $x * $x;
return $x;
}
echo nl2br("$x \n"); // Output: 5
echo nl2br(sqr($x) \n"); // Output: 25
?>To have an argument to a function passed by reference, prepend an ampersand (&) to the parameter name in the function definition.
JavaScript
PHP vs. JavaScript
| Feature | PHP | JavaScript |
| String Manipulation | strlen(), str_replace(), explode(), implode() | length, replace(), split(), join() |
| Array Handling | array_push(), array_pop(), array_keys(), array_values() | push(), pop(), keys(), values() |
| Type Conversion | (int), (float), (string), intval(), floatval() | parseInt(), parseFloat(), String(), Number() |
| Input/Output | echo, print(), file_get_contents(), file_put_contents() | console.log(), alert(), fetch() (for network I/O) |
| Date & Time | date(), strtotime(), time() | Date object methods: getFullYear(), getMonth(), getTime() |
| Category | PHP | JavaScript | Example Code Snippet |
| Output | echo, print | console.log() | PHP: echo "Hello"; JS: console.log("Hello"); |
| String Length | strlen() | .length property | PHP: strlen("Hello") JS: "Hello".length |
| Substring | substr() | substring() / slice() | PHP: substr("Hello", 1, 3) JS: "Hello".slice(1, 4) |
| String Replace | str_replace() | replace() | PHP: str_replace("a", "b", "cat") JS: "cat".replace("a", "b") |
| Find in String | strpos() | indexOf() | PHP: strpos("Hello", "e") JS: "Hello".indexOf("e") |
| Array Length | count() | .length property | PHP: count([1, 2, 3]) JS: [1, 2, 3].length |
| Array Merge | array_merge() | concat() | PHP: array_merge([1], [2]) JS: [1].concat([2]) |
| Check if in Array | in_array() | includes() | PHP: in_array(2, [1, 2, 3]) JS: [1, 2, 3].includes(2) |
| Loop - For Each | foreach loop | forEach() method | PHP: foreach($arr as $val){} JS: [1,2,3].forEach(v => {}) |
| JSON Encode | json_encode() | JSON.stringify() | PHP: json_encode(["a" => 1]) JS: JSON.stringify({a: 1}) |
| JSON Decode | json_decode() | JSON.parse() | PHP: json_decode('{"a":1}') JS: JSON.parse('{"a":1}') |
| Date/Time Now | date("Y-m-d H:i:s") | new Date() | PHP: date("Y-m-d H:i:s") JS: new Date().toISOString() |
| Math Round | round() | Math.round() | PHP: round(2.5) JS: Math.round(2.5) |
| Random Number | rand(min, max) | Math.random() + scaling | PHP: rand(1, 10) JS: Math.floor(Math.random()*10+1) |
| Type Check | is_array(), is_string() | typeof, Array.isArray() | PHP: is_array($x) JS: Array.isArray(x) |
| File Read | file_get_contents() | fetch() / FileReader API (async) | PHP: file_get_contents("file.txt") JS: fetch('file.txt') |
| Variable Dump | var_dump(), print_r() | console.log() | PHP: var_dump($x) JS: console.log(x) |
| Set Timeout | sleep() | setTimeout() | PHP: sleep(2) JS: setTimeout(() => {}, 2000) |
| Define Constant | define() | const keyword | PHP: define("PI", 3.14) JS: const PI = 3.14 |
| Function Declare | function myFunc() {} | function myFunc() {} or arrow function | PHP: function greet() {} JS: const greet = () => {} |
Both MySQLi (the "i" stands for improved) and PDO (PHP Data objects) have their advantages: PDO will work on many (almost all) different database systems, whereas MySQLi will only work with MySQL databases. So, switching project to use another database is easier with PDO. One only have to change the connection string and a few queries. With MySQLi, the entire code will need to be rewritten - queries included. Both are object-oriented, but MySQLi also offers a procedural API. PDO has an exception class to handle any problems that may occur in database queries.
MySQLi Object-Oriented: | MySQLi Procedural
-------------------------------------------------------------------------------
<?php
$srv = "localhost"; | <- same
$usr = "username"; | <- same
$pwd = "password"; | <- same
// Create connection
$con = new mysqli($srv, $usr, $pwd); | $con=mysqli_connect($srv, $usr, $pwd);
// Check connection
if ($con->connect_error) { | if (!$con) {
die("Fail: ".$con->connect_error); | die("Fail: ".mysqli_connect_error());
} | }
$con->close(); | mysqli_close($con);
?>
Strings (text can contain HTML markup) are surrounded by (single or double) quotes, but with double quotes variables can be inserted to the string directly and using single quotes variables have to be inserted using the '.' dot operator. For example:
$str1 = "AI ML"; $str2 = "cfdyna.com"; echo '<p>Sample codes in ' . $str1 . 'at' . $str2.'<p>'; or echo "<p>Sample codes in $str1 at $str2.<p>";Variables can be defined in a file say named as 'common_vars.ph'. Then, this file can be included in any other file and variables defined can be used in the calling file within <?php ... > tags. For example, creation of a form can be parametrized as <input type="text" name="<?php echo $tag_username;?>" value="<?php echo $value_username;?>">
strval(string): Get the string value of a variable - this is useful function to convert arguments of a function into string before adding the information into database. Thus, $sql = "SELECT * FROM tasks WHERE username = '".$username."'"; can be simplified to combination of following two statements: $username = strval($username); and $sql = "SELECT * FROM tasks WHERE username = '$username'";
Handling Passwords: password_verify — Verifies that a password matches a hash e.g. $does_pw_match = password_verify( $user_pass, $stored_pass ); $stored_pass = password_hash( $user_pass, PASSWORD_DEFAULT ); where password_hash( ) creates a new password hash using a strong one-way hashing algorithm PASSWORD_DEFAULT.
MySQL: COMMENTS are from a '-- ' to the end of the line. The double dash-comment style requires at least white space or control character (space, tab, newline...) after the second dash. From a '#' to the end of the line, C-style comment /* ... */ can span multiple lines. You use this comment style to document a block of SQL code. MySQL does not support nested comments. Log-in to MySQL: mysql -u root -p and then enter the password, type 'quit' on mysql prompt to close the session.
Option-1: read files which contains SQL queries

Option-2: Copy-paste SQL queries

Commons Errors:
Failed to connect to MySQL: Access denied for user 'root'@'localhost' (using password: YES), Failed to connect to MySQL: Unknown database 'web_admin_db'
Catching error in SQL Queries:
$sql_cmd = "INSERT INTO tbl_members(`username`, `email`, `password`) VALUES(?,?,?)";
$stmt = $conn -> prepare($sql_cmd);
if ($stmt === False) {
die('Error preparing SQL statement: ' . $conn->connect_error);
}
Steps to create a responsive page with LAMP: assuming LAMP is successfully configured. Default path for local server in Ubuntu: /var/www/htm. The URL to phpMyAdmin on local machine is "localhost/phpmyadmin". Check if /etc/phpmyadmin file is available. "sudo service apache2 restart" will result in error if server not installed. Use sudo apt-get install phpmyadmin to install from command line.
Installing phpMyAdmin may give error message "Connect failed: Access denied for user 'root'@'localhost' (using password: NO)" and shall ask to chose one of the 4 options. Chose 'ignore' to continue installation (use 'tab' key to select <ok>). Now loading "localhost/phpmyadmin" shall result in page looking like this:
Likely errors: mysqli_real_connect(): (HY000/1045): Access denied for user 'phpmyadmin'@'localhost' (using password: YES). Solution: get password from /etc/phpmyadmin/config-db.php >> run SQL Query: CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'passwd'; >> Run another query: "flush privileges;" to apply the changes. Another error: 'The phpMyAdmin configuration storage is not completely configured, some extended features have been deactivated. Find out why. Or alternately go to 'Operations' tab of any database to set it up there." Get file "resources/sql/create_tables.sql" from github repository of phpmyadmin and run the SQL query from this file. Alternatively, under phpMyAdmin dashboard: go to "User Accounts", select 'phpmyadmin' under "User name" and then "Edit privileges".

Files to configure MySQL
Now actual database and PHP stuff:
Step-1:
Define the folder structure named as jas (JavaScript), css, dab (database), adm (administrative stuff), img (images only), vid (videos only), ico (icons only), doc (PDF, DOC and other files), sql, api, lib, tpa (third party)... and create a Readme.txt file to describe what these folders contain and/or are expected to contain. Following is an example for user registration:
Step-2:
Log-in to mysql terminal and create database(s) and table(s) using command and method described above. A database db_user_reg was created from command prompt. A text file contain SQL commands can be used to create table(s). Alternatively, phpMyAdmin dashboard can also be used to create and view the table.
Step-3:
Create login and user registration form using standard HTML and CSS features. A good starting point is "github.com/keerti1924/PHP-MYSQL-User-Login-System" which seems to work without any modifications. A modified version can be downloaded from here. Minor updates such as trimming user inputs, ensuring alpha-numeric user names and e-mail addresses, password length between 8 to 16 characters with at least 1 special character, prepare() and bind_param() used for database updates. A simple forgot password page has been added. There is no check if user has entered a real e-mail address or not, click on 'eye' icon shows password only for one input field.

Step-4:
Create the landing page after successful login or new user registration.Security issues: 'Form' resubmission using refresh (F5) or "Go back one page" logs-in user and/or repeats last operation such as adding same information into the database again.

<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 01 Jan 2020 05:00:00 GMT"); // Date in the past
?>
Some guidelines: create separate SQL command files for create and alter operations. Do not put JavaScript code inside the body - store these scripts in separate files. Follow a convention for naming: tab_ or tbl_ and db_ for table names and database names, for example db_user_reg. Add version and last update at the beginning of each file.
To-Do Application: Another example is taken from github.com/dhiraj-01/Todo-PHP to create a "ToDo List". Some modifications have been done to disable caching and prevent form resubmission on page refresh. This is a very simple set of codes for learning and demonstration. The updated version can be downloaded from here.
The folder structure of modified version is as shown below.
signup.php
|
*-- includes default.html and lib/database.php
*-- checks if user is logged-in and sets location to todo.php
*-- prints (echo) error message above the form section
*-- generates sign-up form and calls lib/adduser.php after Submit
| |
| *--- calls createCAPTCH() function to generate CAPTCHA
| |
| *--- adduser.php
| |
| *-- includes database.php (collection of all functions)
| *-- collects inputs: username, password, secret key and CAPTCHA
| *-- call createUser() function
| |
| *-- validates username, password and secret key
| |
| * alpha-numeric usernames
| * password with special character, length between 6 to 10
| * secret key: up to 6 numeric characters
| *--- if criteria met, adds user
| *--- if not, directs to signup.php which prints error message
login.php
|
*-- form submission directs to lib/valid_inputs.php
*-- function haveValidInputs() defined in database.php is used to check inputs
*-- checks if specified user name exist
`-- checks specified password with stored password using password_verify()
|
todo.php
|
*-- called after successful login
| |
| *-- option to change password with secret key used during sign-up
| *-- generates single line form to get to-do text
| *-- retrieves existing to-do string using getTodoItems() function
| *-- adds new to-do string using addTodoItem() function
|
`*--lib/forgot_password.php
|
*-- form submission directs to lib/resetPassword.php
`*- resetPassword() function from database.php is used to update password
|
*-- checks for valid username, secret key and new password
*-- re-directs to signup.php is invalid inputs are provided.
Further improvement can be to add counter for 3 wrong attempts to log-in, send OTP to specified e-mail to reset password or secret pin, retain valid inputs when page is refreshed for invalid inputs, better background... As one can deduct, the code structure gets complicated even with simplest possible web page having server-side scripts.
Refer the example of Responsive Blog here from 'code-projects.org' which contains 140 different .php files (folder tree contains 41 directories, 266 files). A complete description of code structure with the inter-dependence of files and folders cannot be covered in few pages of a note book. The readme.txt file in this zip folder explains basic steps to make the repository working. The attached ZIP file is working on Ubuntu LTS 20.04, PHP version 7.4, Apache/2.4.41 (Ubuntu), phpMyAdmin 4.9.5deb2 and server version 10.3.39-MariaDB. Readme.txt file has been updated based on experience gained to make the code working.
Server Administration, Data Security and Hacking: Social Media Hunting, Data Theft, Tracking Personal Information
There are 52 characters (including lower and upper cases), 10 digits and 32 special characters on computer keyboard. If one does not allow to have password starting with special character and minimum size of password is set to be 8 characters, just for passwords having 8 characters, 62 x 947 = 4020 trillion combinations are possible. Note that passwords can be any size higher than 8 characters but usually it would limited to 12 ~ 16 characters as users need to remember them.Most Basic Web Security Tips: [1] Prevent access of folder through browser such as https://www.abc.com/pqr/ - Use .htaccess file, [2] whois: This prints personal details of the website owner if privacy protection is not enabled or purchased from domain name provider, [3] wget or libwww: this Linux command can download entire content of a website: Change HTTP User Agent - RewriteCond %{HTTP_USER_AGENT} wget.* [NC], [4] Prevent access to crawlers: use Robot.txt file, [5] Prevent an htaccess file from being viewed: add following line:
<Files .htaccess> order allow,deny deny from all </Files>
Browser Automation and Server Side Scripting:
Selenium, Pupeteer, Playwright, Headless browsers. Server side scripting: jQuery (JavaScript Framework), PHP, Ruby, Django (server side framework, free, open source and written in Python), Node.js (free, open source tool to run JavaScript outside the web browser), AngularJS (to extend HTML with new attributes). MongoDB is a document database which stores data in a type of JSON format called BSON.jQuery
'$' is alias for 'jQuery' and '$()' is shorthand for "$(document).ready()". Code included inside $(window).load(function() { ... }) will run once the entire page (images and iframes), not when just the DOM is ready.PowerBI and Pivot Tables
Excerpt from Microsoft website about PowerBI: Find insights in your data and share rich analytics reports. Explore your reports to find and generate the quick insights you need for better business decisions. Collaborate on reports with colleagues, then easily share reports and insights in workspaces, on the web, in apps, via Microsoft Teams.How to Create a Pivot Table

Cursor AI
Tag line on official website: "The AI Code Editor". More from website: "Cursor lets you write code using instructions. Update entire classes or functions with a simple prompt. Cursor's agent mode completes tasks end to end. It does this quickly, while keeping programmers in the loop. We support all frontier coding models, including Claude Sonnet 4, OpenAI o3-pro, OpenAI GPT-4.1, Gemini 2.5 Pro, Claude Opus 4, and more."Thus, Cursor AI is a code editor that uses artificial intelligence models to help code writers with coding tasks such as code generation, smart rewrites, codebase queries and end-to-end task completion.

OBS stands for Open Broadcaster Software - an open source software to record screen and stream live on platforms like YouTube. In this section some of the tips and tricks are summarized which has been observed and received from other videos and demos. MB stands for Mouse Button. Unlike other programs, OBS does not have option to Save File... Instead is uses Profile for the same purpose. Excerpts from user guide: "A Profile saves most a solid chunk of OBS Studio settings, primarily related to outputs. Using Profiles lets you to switch between different saved settings quickly depending on the stream or recording a user is working on. Scene Collections save all Scenes and Sources that have been added to it. Similar to Profiles for output settings, you can store multiple different collections of saved Scenes and Sources. Then, you can swap between different collections for different situations. Scene Collections do not store output settings."
Studio Mode: It helps to queue-up the scenes (by creating new scenes or selecting from existing ones) and preview while streaming or recoding.

You can add image mask to your webcam using ‘Image Mask/Blend’ option as per steps mentioned here: streamshark.io/obs-guide/image-mask. The white or coloured part of the image is made transparent while applying a mask and the black pixels are made invisible. Note that the mask can be applied on the source and not one the scene. If you apply mask on a source (say web cam), any relative transform between the web cam and mask cannot be applied.
Concepts of Scene and Layers in OBS: Top layer is the visible layer.

Various Types of Sources in OBS

Text Source in OBS

Text Source in OBS: Colour Gradient

Scrolling Text in OBS

Sometimes, the recording may automatically start without you intending to do so. This is very likely due to Hotkey associated with "Start Recording" pressed during some other tasks. Following settings might rectify this issue:

One of the drawbacks of this setting is that you cannot start OBS while it is minimized. This is specially needed when you want to capture screen (activities on the Desktop). One option is to turn on "Never disable hotkeys" before starting a screen capture, set appropriate hotkeys (keyboard shortcuts preferably with ALT key combination at ALT key is rarely used in normal keybord input of texts) for start and stop recordings. Once desired screen capture is complete, turn on "Disable hotkeys when main window is not in focus". Note that scenes and sources automatically gets added to hot-key menu. One can use combination of ^+Shift+keys on the first, second and third rows such as z, x, c or a, s, d or q, w, e for various short cuts.
During screen capturing, one may face screens which captures itself (mirror effect) as shown in following image. If available, move the OBS Studio window to a second monitor. This will prevent it from being captured in the recording. In newer versions of OBS Studio, there is option under Settings > General > check box "Hide OBS windows from screen capture".
Excerpts from OBS website: "High performance real time video/audio capturing and mixing. Create scenes made up of multiple sources including window captures, images, text, browser windows, webcams, capture cards and more. Studio Mode lets you preview your scenes and sources before pushing them live. Adjust your scenes and sources or create new ones and ensure they're perfect before your viewers ever see them. Set hotkeys for nearly every sort of action, such as switching between scenes, starting/stopping streams or recordings, muting audio sources, push to talk, and more. Choose from a number of different and customizable transitions for when you switch between your scenes or add your own stinger video files."
Step-by-Step method to create a circular crop of webcam for OBS Studio. One may need to use "ffmpeg -i Image-Mask-2.png -vf colorkey=white:0.01:0.0 Image-Transparent.png" or other application to create image with white pixels as transparent. In MS-PowerPoint, one can select the shape and directly save as image where the corners of the square around the circle shall be filled with transparent pixels. ImageMagick can also be used to convert white pixels to transparent.
import re
def split_string_at_numbers(input_string):
# Check for +/- sign, digits, decimal point
pattern = r'(-?\d+\.?\d*|\d*\.?\d+)'
# Split the string by the number pattern, keeping delimiters
sub_str = re.split(pattern, input_string)
sub_str_txt = []
sub_str_num = []
for str_txt in sub_str :
if str_txt:
try:
num = float(str_txt)
if num == int(num):
sub_str_num.append(int(num))
else:
sub_str_num.append(num)
except ValueError: # If conversion fails, it implies a string
sub_str_txt.append(str_txt)
for item_txt, item_value in zip(sub_str_txt, sub_str_num):
#print(f"{item_txt} | {item_value}")
print('{} | {}'.format(item_txt, item_value))
return sub_str_txt, sub_str_num
This Python code is a simple and scalable example to check the image tags in all the HTML files stored in a folder and print summary of image tags such as relative path of image file, its file size, missing images...This code can be further improvised to include HREF tags, missing ALT tag for images, add styles to the images, remove styles of the images such as width and height... to name a few.
Python code lined here is a simple and scalable example to check the <a> tags and HREF values in all the HTML files stored in a folder and print summary of hyperlinks such as relative path of the file referred by HREF, missing files in the links... This code does not check the hyperlinks referred by HREF starting with http or https. This script can be further improvised to check for missing attribute values such as _blank.
Flowchart to create User Interfaces for multiple Standalone Apps and Deploy on Cloud Platforms like AWS
START ↓ Requirement Analysis: Define scope and expected key features ↓ Analyze Engineering Tools: inputs, run-time, outputs ↓ Define UI Requirements ├─ User roles ├─ Input/Output formats ├─ Tool execution triggers ↓ Choose UI Framework ├─ Web (React / Angular / Vue) └─ Desktop (Electron / PyQt) ↓ Design UI/UX ├─ Wireframes ├─ Navigation flow └─ Tool integration layout ↓ Develop Frontend UI ├─ Forms for input ├─ Dashboard for tools └─ Visualization components ↓ Create Back-end Layer (Optional but Recommended) ├─ API Gateway ├─ Microservices (Node.js / Python) └─ Tool Execution Handlers ↓ Integrate Standalone Tools ├─ CLI execution wrappers ├─ Containerization (Docker) └─ Input/Output handling ↓ Testing Phase ├─ Unit Testing ├─ Integration Testing └─ UI Testing ↓ Containerize Application ├─ UI (Frontend container) ├─ Back-end services └─ Engineering tools ↓ Push to Container Registry └─ AWS ECR ↓ AWS Deployment Decision ├─ Simple Hosting → AWS EC2 ├─ Scalable Apps → AWS ECS / EKS └─ Serverless → AWS Lambda + API Gateway ↓ Deploy Infrastructure ├─ Configure VPC ├─ Setup Load Balancer ├─ Configure Auto Scaling ↓ Deploy Application ├─ Frontend → S3 + CloudFront ├─ Back-end → ECS / EC2 / Lambda └─ Tools → Containers / EC2 instances ↓ Setup Storage ├─ S3 (files/results) ├─ RDS / DynamoDB (metadata) ↓ Monitoring and Logging ├─ CloudWatch ├─ X-Ray (optional) ↓ Security Setup ├─ IAM Roles ├─ HTTPS (ACM) ├─ Authentication (Cognito) ↓ CI/CD Pipeline ├─ CodeCommit / GitHub ├─ CodeBuild └─ CodePipeline ↓ END (Live System)
Checklist to Develop a Simple Web App
| Activity / Step / Stage | Artefacts | R | A | S | I | C |
| Product Definition and Planning | ||||||
| Define problem statement | Product Owner | S/w Architect | S/w Architect | Full-stack | DevOps | |
| Identify target users | Product Owner | S/w Architect | S/w Architect | Full-stack | DevOps | |
| Define core features | Product Owner | S/w Architect | S/w Architect | Full-stack | DevOps | |
| Write functional requirements | Product Owner | S/w Architect | S/w Architect | Full-stack | DevOps | |
| Define success metrics (KPIs) | Product Owner | S/w Architect | S/w Architect | Full-stack | DevOps | |
| Technical Planning | ||||||
| Choose architecture | Monolith | S/w Architect | Product Owner | Full-stack | Product Owner | Full-stack |
| Select frontend framework | React | S/w Architect | Product Owner | Full-stack | Product Owner | Full-stack |
| Select back-end tech | Node.js | S/w Architect | Product Owner | Full-stack | Product Owner | Full-stack |
| Choose database | MongoDB | S/w Architect | Product Owner | Full-stack | Product Owner | Full-stack |
| Define API design | REST | S/w Architect | Product Owner | Full-stack | Product Owner | Full-stack |
| Create authentication and authorization scheme | AWS Amplify | S/w Architect | Product Owner | Full-stack | Product Owner | Full-stack |
| Define third-party integrations | Single Sign-On | S/w Architect | Product Owner | Full-stack | Product Owner | Full-stack |
| Create high-level system design diagram | AWS Amplify | S/w Architect | Product Owner | Full-stack | Product Owner | Full-stack |
| UX/UI Design | ||||||
| Create wireframes (low fidelity) | Full-stack | Product Owner | S/w Architect | |||
| Design UI mock-ups (high fidelity) | Figma | Full-stack | Product Owner | S/w Architect | ||
| Define design system (colours, typography, components) | Full-stack | Product Owner | S/w Architect | |||
| Plan responsive design | Desktops only | Full-stack | Product Owner | S/w Architect | ||
| Validate UX with stakeholders | Full-stack | Product Owner | S/w Architect | |||
| Project Setup | ||||||
| Initialize repository | Git | DevOps | S/w Architect | |||
| Set up project structure | AWS | DevOps | S/w Architect | |||
| Configure package managers | npm | DevOps | S/w Architect | |||
| Set up linting and formatting tools | ESLint | DevOps | S/w Architect | |||
| Configure environment variables | AWS | DevOps | S/w Architect | |||
| Set up CI/CD pipeline | GitHub | DevOps | S/w Architect | |||
| Frontend Development | ||||||
| Set up routing/navigation | Full-stack | S/w Architect | ||||
| Build reusable components | React | Full-stack | S/w Architect | |||
| Implement UI screens, ensure responsiveness | React | Full-stack | S/w Architect | |||
| Integrate APIs | React | Full-stack | S/w Architect | |||
| Manage state | Redux | Full-stack | S/w Architect | |||
| Handle forms and validation | React | Full-stack | S/w Architect | |||
| Add loading/error states | Node | Full-stack | S/w Architect | |||
| Back-end Development | ||||||
| Set up server framework | Node.js | Full-stack | S/w Architect | |||
| Define database schema | Full-stack | S/w Architect | ||||
| Implement APIs/endpoints | Full-stack | S/w Architect | ||||
| Add authentication | JWT | Full-stack | S/w Architect | |||
| Implement business logic | Full-stack | S/w Architect | ||||
| Add input validation and error handling | Full-stack | S/w Architect | ||||
| Integrate external services | Full-stack | S/w Architect | ||||
| Write unit tests | Full-stack | S/w Architect | ||||
| Database and Data Management | ||||||
| Design schema/models | Full-stack | S/w Architect | Product Owner | |||
| Set up migrations | Full-stack | S/w Architect | Product Owner | |||
| Seed initial data | Full-stack | S/w Architect | Product Owner | |||
| Optimize queries and indexing | Full-stack | S/w Architect | Product Owner | |||
| Security | ||||||
| Implement HTTPS | TSL 1.3 | Full-stack | DevOps | Product Owner | ||
| Protect against XSS, CSRF, SQL injection | Full-stack | DevOps | Product Owner | |||
| Secure authentication and sessions | Full-stack | DevOps | Product Owner | |||
| Validate and sanitize inputs | Full-stack | DevOps | Product Owner | |||
| Manage secrets securely | Full-stack | DevOps | Product Owner | |||
| Set up rate limiting | Full-stack | DevOps | Product Owner | |||
| Testing | ||||||
| Unit tests | Jest | Full-stack | DevOps | S/w Architect | ||
| Integration tests | Jest | Full-stack | DevOps | S/w Architect | ||
| End-to-end tests | Full-stack | DevOps | S/w Architect | |||
| Manual QA testing | Full-stack | DevOps | S/w Architect | |||
| Cross-browser testing | Full-stack | DevOps | S/w Architect | |||
| Performance testing | Lighthouse | Full-stack | DevOps | S/w Architect | ||
| Deployment Stage | ||||||
| Choose hosting | AWS | Full-stack | DevOps | S/w Architect | ||
| Set up production environment | Full-stack | DevOps | S/w Architect | |||
| Configure CI/CD pipelines | CodeBuild | Full-stack | DevOps | S/w Architect | ||
| Set up domain and DNS | Full-stack | DevOps | S/w Architect | |||
| Configure SSL certificates | Full-stack | DevOps | S/w Architect | |||
| Set up monitoring and logging | Full-stack | DevOps | S/w Architect | |||
| Performance Optimization | ||||||
| Optimize frontend assets | Lazy loading | S/w Architect | Full-stack | Product Owner | ||
| Implement caching | Not required | S/w Architect | Full-stack | Product Owner | ||
| Optimize database queries | S/w Architect | Full-stack | Product Owner | |||
| Use compression | gzip | S/w Architect | Full-stack | Product Owner | ||
| Analyze performance | S/w Architect | Full-stack | Product Owner | |||
| Launch Readiness | ||||||
| Final QA pass | S/w Architect | Product Owner | S/w Architect | |||
| Fix critical bugs | S/w Architect | Product Owner | S/w Architect | |||
| Prepare rollback plan | S/w Architect | Product Owner | S/w Architect | |||
| Create user documentation/help pages | S/w Architect | Product Owner | S/w Architect | |||
| Post-Launch | ||||||
| Monitor errors and logs | S/w Architect | Full-stack | DevOps | Product Owner | ||
| Track user behaviour and metrics | S/w Architect | Full-stack | DevOps | Product Owner | ||
| Gather user feedback | S/w Architect | Full-stack | DevOps | Product Owner | ||
| Plan feature iterations | S/w Architect | Full-stack | DevOps | Product Owner | ||
| Regular security updates | S/w Architect | Full-stack | DevOps | Product Owner | ||
| Scale infrastructure as needed | S/w Architect | Full-stack | DevOps | Product Owner | ||
Example User Stories for a Web App Development Projects
| Stakeholder Role | Stakeholder Name | Responsibility | | ----------------- | ---------------- | -------------------- | | Sponsor | A | Budget Approval | | Project Manager | B | Define Requirements | | Product Owner | C | Implement Features | | Development Team | D | Develop Applications | | QA Team | E | Quality Assurance | | End Users | F, G, H | Provide Feedbacks |

Flowchart: User Registration with Single Sign-On (SSO) Login
┌─────────────────────────────┐
│ Start │
└─────────┬───────────────────┘
│
▼
┌─────────────────────────────┐
│ User Opens Web App │
└─────────┬───────────────────┘
│
▼
┌─────────────────────────────┐
│ New User Registration Form │
│ - Name, Email, Team Detail │
└─────────┬───────────────────┘
│
▼
.-----------------------------.
│ Submit Registration Form │
└─────────┬───────────────────┘
│
▼
.-----------------------------.
│ Registration Sent to Owner │
│ for Approval │
└─────────┬───────────────────┘
│
▼
┌─────────────────────────────┐
│ Owner Reviews Request │
└─────────┬───────────────┬───┘
│ │
Approved '-------Rejected
│ │
▼ ▼
┌──────────────────────┐ ┌───────────────────┐
│ User Account Created │ │ Rejection Email / │
│ in System │ │ Notification Sent │
└─────────┬────────────┘ └─────────┬─────────┘
│ │
▼ ▼
┌──────────────────────┐ ┌─────────────┐
│ Approval Notification│ │ End │
│ Sent to User │ | |
└─────────┬────────────┘ └─────────────┘
│
▼
┌─────────────────────────────┐
│ User Accesses Login Screen │
└─────────┬───────────────────┘
│
▼
┌─────────────────────────────┐
│ SSO via Identity Provide │
│ (corporate ID/password) │
└─────────┬───────────────────┘
│
▼
┌─────────────────────────────┐
│ Authentication Successful? │
└─────────┬────────────────┬──┘
│ │
Yes No
│ │
▼ ▼
┌──────────────────┐ ┌───────────────┐
│ Redirect to User │ │ Display Login │
│ Dashboard │ │ Error Message │
└─────────┬────────┘ └───────┬───────┘
│ │
▼ ▼
┌──────────┐ ┌──────────┐
│ End │ │ End │
└──────────┘ └──────────┘
Template to create work-flow for International Travels
This is a simple template which can be improvised to create an efficient workflow for international travels.
First and foremost, learn the recommended guidelines for the chosen programming language and get a good text editor with syntax highlighting, auto-indentation and spell checker. Decide your own skill gap and chose whether procedural (functional) programming approach shall be easier to handle or the object oriented programming (OOP) method shall be needed. Coding standards and best practices vary depending on the industry a specific product is being developed for.
Get familiarity and start using any IDE (Integrated Development Environment) of your choice such as Visual Studio Code, Spyder, JuPyter, NetBeans, IDLE... Investigate into language specific libraries and frameworks - it helps in reusability and standardization. Instead of writing own CSS, use of Bootstrap enhances productivity.Write the version of each piece of code at the beginning of respective file. Create naming conventions for files and folders. Learn version management programs like Git. Split the main program into functions and subroutine. Develop naming standard for each variable type. Chose variable name easy to interpret (such as with minimum 4 characters except loop counters) or multiple words separated by underscore. Create a list of 'include' modules and variables in a separate file (for example, import modules in Python such as cv2, numpy, PyPDF2...). One can follow standard convention in industry: Camel or Pascal case for naming functions, packages and classes. Snake case or Camel case for variables, objects and constants. Kebab case are supported by few programming languages such as SCHEME. One style can be to use built-in variables and function in UPPERCASE when the programming language is not case-sensitive.
Define sign conventions for variables: for example one may add prefix i_ for integers, f_ for floats, s_ for strings, a_ for arrays, d_ for dictionaries, t_ for tuples, o_ for objects...., mnth_ for monthly, qrtr_ for quarterly, half_ for half-yearly, year_ for yearly, infi_ for input field, sum_ for summation, bttn_ for buttons, cqbx_ for checkboxes...
User Ternary operator for single line loop and conditional blocks. For example, curly braces are optional in C in IF loops if there is only one statement. In Python, the single line statement can be written on the same line as the if condition. x = 1 if a > b else 2. In Java, it takes the form "variable = (condition) ? if condition True : if condition False; e.g. max_val = (n1 > n2) ? n1 : n2
Write descriptions of input variables and output(s) from each function and subroutine. Identify basic error logic and terminate the program with appropriate user message such as missing file or image. Use appropriate format statements for numbers and change the format style based on values. For example, do not print more than 3 decimals for any number > 100. For numbers > 105, switch to exponential notation. Similarly, for values < 0.0001, it is better to switch to exponential notation.
Understand the auto-generated help texts: First comment after function definition is used as Documentation String in MATLAB, Similarly, in Python first block of comments in the body of a method or function (those within triple quotes ''' ... ''') are used as Documentation String for that functions which can be printed by command help (funcName). In most of the cases, it is advised that the comments and user message should be restricted to 72 characters in the width (horizontal direction).
Excerpts from browserstack.com/guide/coding-standards-best-practices: Use the DRY (Don’t Repeat Yourself) principle. Automate repetitive tasks whenever necessary. The same piece of code should not be repeated in the script. Avoid Deep Nesting. Too many nesting levels make code harder to read and follow.
This document summarizes coding standards and guidelines for web app development projects.
User Training Flowchart

The content on CFDyna.com is being constantly refined and improvised with on-the-job experience, testing, and training. Examples might be simplified to improve insight into the physics and basic understanding. Linked pages, articles, references, and examples are constantly reviewed to reduce errors, but we cannot warrant full correctness of all content.
Template by OS Templates