├── timetable_photo.jpeg ├── lessons ├── index.html ├── lesson-3_html_basics.md ├── lesson-4_css_basics.md ├── lesson-9_AdvancedJavaScript.md ├── lesson-6_Advanced_CSS.md └── lesson-5_more_html.md ├── README.md ├── season-9 ├── html_forms.md ├── css_forms.md ├── final_project.md └── course_outline.md ├── task4.md ├── Final_Project.md ├── basic_REST_API_assignment.md ├── RESTful_API_with_Express_js.md ├── semantic_html.md ├── html_forms.md ├── task4_solution.md ├── Course_outline.md ├── functions.html └── timetable_assignment.md /timetable_photo.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Chacha-A-Chacha/IYF-weekend_academy/HEAD/timetable_photo.jpeg -------------------------------------------------------------------------------- /lessons/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 48 | 49 | 50 |
51 |
52 |
53 |
54 |
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 |

My Skills

46 | 51 | ``` 52 | 53 | ### Step 4: Add Projects Section 54 | Create a section showcasing your projects: 55 | 56 | ```html 57 |

My Projects

58 |
    59 |
  1. 60 |

    First Web Page

    61 |

    My very first HTML project demonstrating basic web skills.

    62 |
  2. 63 |
  3. 64 |

    Coming Soon Project

    65 |

    Details will be added as I learn more!

    66 |
  4. 67 |
68 | ``` 69 | 70 | ### Step 5: Include Contact Information 71 | Add contact details with a link: 72 | 73 | ```html 74 |

Contact Me

75 |

Email: your.email@example.com

76 |

Feel free to reach out and connect!

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 | - `

` to `

`: Headings 103 | - `

`: Paragraphs 104 | - `