55 |
56 |
57 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | ---
3 |
4 | # Web Development Course Outline
5 |
6 | ## Overview
7 | This repository contains a comprehensive outline for a Web Development course designed to provide learners with a solid foundation in front-end and back-end technologies. The course emphasizes practical skills in web development, including HTML, CSS, JavaScript, and Node.js, focusing on building full-stack applications.
8 |
9 | ## Course Structure
10 | The course is organized into 12 weeks, covering essential topics such as:
11 |
12 | - **Introduction to Web Development and Linux:** An overview of web development, the Linux command line, and the basics of HTML and CSS.
13 | - **Advanced HTML and CSS:** In-depth lessons on semantic HTML, advanced CSS techniques, and responsive design.
14 | - **JavaScript Fundamentals:** Core concepts of JavaScript, including functions, DOM manipulation, and asynchronous programming.
15 | - **Front-End Frameworks:** Introduction to popular frameworks like React, focusing on state management and styling techniques.
16 | - **Node.js and Back-End Development:** Fundamentals of Node.js, building RESTful APIs with Express.js, and integrating MongoDB for data persistence.
17 | - **Full-Stack Development:** Combining front-end and back-end components to create a complete application.
18 | - **Deployment and Testing:** Best practices for testing, version control with Git, and deploying applications to cloud platforms.
19 |
20 | ## Learning Objectives
21 | By the end of this course, students will:
22 | - Understand the core principles of web development.
23 | - Be proficient in HTML, CSS, JavaScript, and Node.js.
24 | - Gain hands-on experience in building full-stack applications.
25 | - Learn to deploy and maintain web applications.
26 |
27 | ## Getting Started
28 | To get started with the course, clone this repository and follow the outlined lessons week by week. Additional resources and references are provided for further exploration of each topic.
29 |
30 | ## Contributing
31 | Contributions to enhance the course content are welcome! Please feel free to submit pull requests or open issues for discussion.
32 |
33 | ## License
34 | This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
35 |
36 | ---
37 |
38 |
--------------------------------------------------------------------------------
/season-9/html_forms.md:
--------------------------------------------------------------------------------
1 | # **HTML Forms Implementation Assignment**
2 |
3 | ## **Objective**
4 | Implement a structured HTML form based on provided specifications, demonstrating semantic HTML practices and proper repository documentation.
5 |
6 | ## **Assignment Overview**
7 | You will receive a **PDF document** containing form input specifications and requirements. Your task is to create a functional HTML implementation using semantic HTML structure.
8 |
9 | ---
10 |
11 | ## **Instructions:**
12 |
13 | ### **1. Form Implementation**
14 | - Study the provided PDF specifications carefully
15 | - Create a complete HTML form following the outlined structure
16 | - Apply **semantic HTML principles** throughout your implementation
17 | - Ensure proper accessibility standards are met
18 | - **No CSS styling required** - focus on semantic structure and functionality
19 |
20 | ### **2. Repository Setup**
21 | Create a **GitHub repository** with the following structure:
22 | ```
23 | your-repo-name/
24 | ├── index.html
25 | └── README.md
26 | ```
27 |
28 | ### **3. Repository Requirements**
29 |
30 | **index.html**
31 | - Your complete HTML form implementation
32 | - Must be functional and semantically structured
33 | - Follow HTML5 standards and best practices
34 |
35 | **README.md**
36 | - Document your repository purpose and contents
37 | - Explain your implementation approach
38 | - Include any relevant information about your form structure
39 |
40 | ### **4. README Documentation Standards**
41 | Your README should include:
42 | - **Project title and description**
43 | - **Purpose** of the form and its sections
44 | - **File structure** explanation
45 | - **Implementation notes** about your approach
46 | - **How to use/view** the form
47 |
48 | **README Writing Resources:**
49 | - [GitHub's Guide to READMEs](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-readmes)
50 | - [Make a README Template](https://www.makeareadme.com/)
51 | - [README Best Practices](https://github.com/othneildrew/Best-README-Template)
52 |
53 | ### **5. Submission Requirements**
54 | - **Submit your GitHub repository link**
55 | - Ensure repository is **public** and accessible
56 | - Verify that **index.html opens and displays correctly** in browsers
57 | - **README.md must be complete** and informative
58 |
59 | ### **6. Evaluation Focus**
60 | - **Semantic HTML implementation** quality
61 | - **Form functionality** and proper structure
62 | - **Repository organization** and documentation
63 | - **README clarity** and completeness
64 | - **Code quality** and best practices adherence
65 |
66 | ---
67 |
68 | **Important Notes:**
69 | - Focus on semantic meaning rather than visual appearance
70 | - Pay attention to proper labeling and form accessibility
71 | - Your implementation should demonstrate understanding of HTML form elements and structure
72 | - Repository documentation is as important as the code itself
73 |
74 | **Deadline:** Check the Google Classroom Assignment for the deadline
75 |
--------------------------------------------------------------------------------
/task4.md:
--------------------------------------------------------------------------------
1 |
2 | **Note**: this course material was written with version v22.3.0 of Node.js. Please make sure that your version of Node is at least as new as the version used in the material (you can check the version by running *node -v* in the command line).
3 |
4 | In the exercises for this part, we will be building a *recipe collection application*, that allows users to save information about favorite recipes they want to keep track of. For each recipe we will save the dish name, chef, ingredients, preparation time, and rating from users of the application.
5 |
6 | ### Recipe Collection, step 1
7 | Let's imagine a situation, where you receive an email that contains the following application body and instructions:
8 |
9 | ```js
10 | const express = require('express')
11 | const mongoose = require('mongoose')
12 |
13 | const app = express()
14 |
15 | const recipeSchema = mongoose.Schema({
16 | name: String,
17 | chef: String,
18 | ingredients: String,
19 | prepTime: Number,
20 | rating: Number,
21 | })
22 |
23 | const Recipe = mongoose.model('Recipe', recipeSchema)
24 |
25 | const mongoUrl = 'mongodb://localhost/recipelist'
26 | mongoose.connect(mongoUrl)
27 |
28 | app.use(express.json())
29 |
30 | app.get('/api/recipes', (request, response) => {
31 | Recipe.find({}).then((recipes) => {
32 | response.json(recipes)
33 | })
34 | })
35 |
36 | app.post('/api/recipes', (request, response) => {
37 | const recipe = new Recipe(request.body)
38 |
39 | recipe.save().then((result) => {
40 | response.status(201).json(result)
41 | })
42 | })
43 |
44 | const PORT = 3003
45 | app.listen(PORT, () => {
46 | console.log(`Server running on port ${PORT}`)
47 | })
48 | ```
49 |
50 | Turn the application into a functioning *npm* project. To keep your development productive, configure the application to be executed with *node --watch*. You can create a new database for your application with MongoDB Atlas, or use the same database from the previous part's exercises.
51 |
52 | Verify that it is possible to add recipes to the list with Postman or the VS Code REST client and that the application returns the added recipes at the correct endpoint.
53 |
54 | ### Recipe Collection, step 2
55 | Refactor the application into separate modules as shown earlier in this part of the course material.
56 |
57 | **NB** refactor your application in baby steps and verify that it works after every change you make. If you try to take a "shortcut" by refactoring many things at once, then Murphy's law will kick in and it is almost certain that something will break in your application. The "shortcut" will end up taking more time than moving forward slowly and systematically.
58 |
59 | One best practice is to commit your code every time it is in a stable state. This makes it easy to rollback to a situation where the application still works.
60 |
61 | If you're having issues with *content.body* being *undefined* for seemingly no reason, make sure you didn't forget to add *app.use(express.json())* near the top of the file.
62 |
63 |
64 | ### Final Steps and Testing
65 |
66 | Start the server with `npm run dev`
67 | Test the API with Postman or VS Code REST client:
68 |
69 | GET request to http://localhost:3003/api/blogs
70 | POST request to http://localhost:3003/api/blogs with a JSON body like:
71 | ```JSON
72 | json{
73 | "title": "Test Blog",
74 | "author": "Test Author",
75 | "url": "http://testblog.com",
76 | "likes": 5
77 | }
78 |
79 | ```
80 |
81 | If you're using MongoDB Atlas instead of a local MongoDB, make sure to update the MONGODB_URI in your .env file with the correct connection string from Atlas.
82 |
--------------------------------------------------------------------------------
/lessons/lesson-3_html_basics.md:
--------------------------------------------------------------------------------
1 | # Lesson 3: HTML Basics
2 |
3 | ## Lesson Objectives
4 | By the end of this lesson, you will:
5 | - Build your first interactive HTML webpage
6 | - Understand and apply HTML tags
7 | - Create structured content
8 | - Develop practical web design skills
9 |
10 | ## 1. Personal Portfolio Page
11 |
12 | ### Setup Instructions
13 | 1. Open a text editor (Notepad, VS Code, or Sublime Text)
14 | 2. Create a new file named `portfolio.html`
15 | 3. Follow the step-by-step instructions below
16 |
17 | ### Step 1: Basic Page Structure
18 | Type the following code to create the HTML document skeleton:
19 |
20 | ```html
21 |
22 |
23 |
24 |
25 | My Personal Portfolio
26 |
27 |
28 |
29 |
30 |
31 | ```
32 |
33 | ### Step 2: Add Main Heading and Introduction
34 | Inside the `` tag, add:
35 |
36 | ```html
37 |
Your Name's Portfolio
38 |
Welcome to my personal portfolio! I'm a passionate learner exploring web development.
39 | ```
40 |
41 | ### Step 3: Create Skills Section
42 | Add an unordered list of your skills:
43 |
44 | ```html
45 |
77 | ```
78 |
79 | ## Tasks
80 |
81 | ### Task 1: Customize Your Page
82 | - Change the heading text to your name
83 | - Replace the skills with your actual skills
84 | - Add a personal description
85 | - Create real or imaginary projects
86 |
87 | ### Task 2: Add More HTML Elements
88 | Experiment by adding:
89 | - An image of yourself (use `` tag)
90 | - A blockquote about your favorite quote
91 | - Different text formatting like `` for emphasis
92 |
93 | ### Task 3: Attribute Exploration
94 | Practice using HTML attributes:
95 | - Add `alt` text to images
96 | - Create links with `target="_blank"` to open in new tabs
97 | - Use `id` and `class` attributes for future styling
98 |
99 | ## Quick Reference Guide
100 |
101 | ### Common HTML Tags
102 | - `