Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Update foundations path structure #3611

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions db/fixtures/paths/foundations/courses/beyond_foundations.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
########################
# Course - Beyond Foundations
########################
course = @path.add_course do |course|
course.title = 'Beyond Foundations'
course.description = "With the foundational knowledge you've learned, you're almost ready to take on the rest of the curriculum. All that's left is to get a quick introduction to the backend and then a little help in choosing your future with TOP."
course.identifier_uuid = '7307ca83-e4cf-4789-b957-d4bdcfe3e200'
course.show_on_homepage = true
course.badge_uri = 'badge-foundations.svg'
end

# +++++++++++++++++++++++
# SECTION - Conclusion
# +++++++++++++++++++++++
course.add_section do |section|
section.title = 'Conclusion'
section.description = "Now that you've had a healthy taste of the basics of web development, it's time to choose what specialty path you would like to take."
section.identifier_uuid = '22cbdd2f-785b-40c9-9c54-d21755974df7'

section.add_lessons(
foundation_lessons.fetch('Choose Your Path Forward'),
)
end

# clean up any removed seeds from the database
course.delete_removed_seeds
63 changes: 63 additions & 0 deletions db/fixtures/paths/foundations/courses/getting_started.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
########################
# Course - Getting Started
########################
course = @path.add_course do |course|
course.title = 'Getting Started'
course.description = "Whether you're experienced in programming or totally new to it, this is where everyone should start with The Odin Project. You'll learn about the mindset and conduct one needs to be a successful professional, some required installations for doing this curriculum, and some of the workflow habits you'll use throughout the curriculum and beyond."
course.identifier_uuid = '6eb953fc-de6f-4b00-ac1f-dfd0b438814e'
course.show_on_homepage = true
course.badge_uri = 'badge-foundations.svg'
end

# +++++++++++++
# SECTION - Introduction
# +++++++++++++
course.add_section do |section|
section.title = 'Introduction'
section.description = "In this introduction to The Odin Project you'll learn how you can be most successful when going through the curriculum, from improving your mindset when it comes to learning to seeking help from other users."
section.identifier_uuid = '472bf0bc-2667-4206-84ea-43498b1d67f9'

section.add_lessons(
foundation_lessons.fetch('How This Course Will Work'),
foundation_lessons.fetch('Introduction to Web Development'),
foundation_lessons.fetch('Motivation and Mindset'),
foundation_lessons.fetch('Asking For Help'),
foundation_lessons.fetch('Join the Odin Community'),
)
end

# +++++++++++++++++++++++
# SECTION - Prerequisites
# +++++++++++++++++++++++
course.add_section do |section|
section.title = 'Prerequisites'
section.description = "In this section you'll first acquire some baseline knowledge related to computers and the web. Then you'll configure some of the necessary installations for the entire curriculum."
section.identifier_uuid = 'a6ff8570-b301-4275-8cb4-1847a8f8ae25'

section.add_lessons(
foundation_lessons.fetch('Computer Basics'),
foundation_lessons.fetch('How Does the Web Work?'),
foundation_lessons.fetch('Installation Overview'),
foundation_lessons.fetch('Installations'),
foundation_lessons.fetch('Text Editors'),
foundation_lessons.fetch('Command Line Basics'),
foundation_lessons.fetch('Setting up Git'),
)
end

# ++++++++++++++++++++++++++++++++++++++++++++++
# SECTION - Git Basics
# ++++++++++++++++++++++++++++++++++++++++++++++
course.add_section do |section|
section.title = 'Git Basics'
section.description = "It's time to Git good! You'll learn the basics of Git and how you can upload your projects to GitHub. This will set you up to share your work with other users and future employers, as well as collaborate with others on projects."
section.identifier_uuid = '7fbf3991-88d4-4564-9982-dce53328f037'

section.add_lessons(
git_lessons.fetch('Introduction to Git'),
git_lessons.fetch('Git Basics'),
)
end

# clean up any removed seeds from the database
course.delete_removed_seeds
67 changes: 67 additions & 0 deletions db/fixtures/paths/foundations/courses/html_css_foundations.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
########################
# Course - HTML and CSS Foundations
########################
course = @path.add_course do |course|
course.title = 'HTML and CSS Foundations'
course.description = "Before you can create anything like the websites and apps you use every day, you'll first need to know the basics of creating a simple web page. You'll learn how to build the structure of a page with HTML, add visual styling with CSS, and create a simple layout with Flexbox."
course.identifier_uuid = 'ca6f2080-bd67-4707-988c-1e6f17e391f7'
course.show_on_homepage = true
course.badge_uri = 'badge-html-css.svg'
end

# +++++++++++++
# SECTION - HTML Foundations
# +++++++++++++
course.add_section do |section|
section.title = 'HTML Foundations'
section.description = "HTML is a fundamental building block of everything on the web. You'll learn just what HTML is and some common and useful basics."
section.identifier_uuid = '8b6abb7a-095f-4c1d-b81f-e348aaaf2894'

section.add_lessons(
foundation_lessons.fetch('Introduction to HTML and CSS'),
foundation_lessons.fetch('Elements and Tags'),
foundation_lessons.fetch('HTML Boilerplate'),
foundation_lessons.fetch('Working with Text'),
foundation_lessons.fetch('Lists'),
foundation_lessons.fetch('Links and Images'),
git_lessons.fetch('Commit Messages'),
foundation_lessons.fetch('Recipes'),
)
end

# +++++++++++++++++++++++
# SECTION - CSS Foundations
# +++++++++++++++++++++++
course.add_section do |section|
section.title = 'CSS Foundations'
section.description = "CSS is what will help to make your HTML look the way you want. Once you complete this section, you'll be creating projects with style."
section.identifier_uuid = 'd2476929-d71b-4b25-969b-8f7da6a40c94'

section.add_lessons(
foundation_lessons.fetch('Intro to CSS'),
foundation_lessons.fetch('The Cascade'),
foundation_lessons.fetch('Inspecting HTML and CSS'),
foundation_lessons.fetch('The Box Model'),
foundation_lessons.fetch('Block and Inline'),
)
end

# ++++++++++++++++++++++++++++++++++++++++++++++
# SECTION - Flexbox
# ++++++++++++++++++++++++++++++++++++++++++++++
course.add_section do |section|
section.title = 'Flexbox'
section.description = "Now that you've learned some styling basics, it's time to learn how to put things exactly where you want them on your web projects using flexbox, one of the most common layout methods in CSS."
section.identifier_uuid = '1cac0d64-f276-4999-8ff1-85d37797c312'

section.add_lessons(
foundation_lessons.fetch('Introduction'),
foundation_lessons.fetch('Growing and Shrinking'),
foundation_lessons.fetch('Axes'),
foundation_lessons.fetch('Alignment'),
foundation_lessons.fetch('Landing Page'),
)
end

# clean up any removed seeds from the database
course.delete_removed_seeds
40 changes: 40 additions & 0 deletions db/fixtures/paths/foundations/courses/javascript_foundations.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
########################
# Course - JavaScript Foundations
########################
course = @path.add_course do |course|
course.title = 'JavaScript Foundations'
course.description = "Now it's time to implement some actual functionality. You'll learn the basics to writing JavaScript code, how to debug and plan out your code, and how to dynamically update a page."
course.identifier_uuid = 'ace112b1-0407-454e-9d23-da2099554a42'
course.show_on_homepage = true
course.badge_uri = 'badge-javascript.svg'
end

# +++++++++++++
# SECTION - JavaScript Basics
# +++++++++++++
course.add_section do |section|
section.title = 'JavaScript Basics'
section.description = 'Here we finally dig into JavaScript and learn how to make the web dynamic.'
section.identifier_uuid = '331227f7-c939-4988-b8b9-e140d2ded362'

section.add_lessons(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: I feel like this is section is slightly too long, especially when compared with the other new sections. Could maybe split on DOM manipulation, since that also conceptually is very different from what comes before it?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To my knowledge these section description fields are vestigial since the Tailwind rework. We no longer show them anywhere

foundation_lessons.fetch('Fundamentals Part 1'),
foundation_lessons.fetch('Fundamentals Part 2'),
foundation_lessons.fetch('JavaScript Developer Tools'),
foundation_lessons.fetch('Fundamentals Part 3'),
foundation_lessons.fetch('Problem Solving'),
foundation_lessons.fetch('Understanding Errors'),
foundation_lessons.fetch('Rock Paper Scissors'),
foundation_lessons.fetch('Clean Code'),
foundation_lessons.fetch('Installing Node.js'),
foundation_lessons.fetch('Fundamentals Part 4'),
foundation_lessons.fetch('DOM Manipulation and Events'),
foundation_lessons.fetch('Revisiting Rock Paper Scissors'),
foundation_lessons.fetch('Etch-a-Sketch'),
foundation_lessons.fetch('Fundamentals Part 5'),
foundation_lessons.fetch('Calculator'),
)
end

# clean up any removed seeds from the database
course.delete_removed_seeds
165 changes: 7 additions & 158 deletions db/fixtures/paths/foundations/seed.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# ************************
# Path - Foundations
# ************************
path = Seeds::PathBuilder.build do |path|
@path = Seeds::PathBuilder.build do |path|
path.title = 'Foundations'
path.short_title = 'Foundations Path'
path.description = "This is where it all begins! A hands-on introduction to all of the essential tools you'll need to build real, working websites. You'll learn what web developers actually do and the foundations you'll need for later courses."
Expand All @@ -11,161 +11,10 @@
path.default_path = true
end

#######################
# Course - Foundations
#######################
load './db/fixtures/paths/foundations/courses/getting_started.rb'
load './db/fixtures/paths/foundations/courses/html_css_foundations.rb'
load './db/fixtures/paths/foundations/courses/javascript_foundations.rb'
load './db/fixtures/paths/foundations/courses/beyond_foundations.rb'

course = path.add_course do |course|
course.title = 'Foundations'
course.description = "This is where it all begins! A hands-on introduction to all of the essential tools you'll need to build real, working websites. You'll learn what web developers actually do – the foundations you'll need for later courses."
course.identifier_uuid = '783e9b72-a447-4f49-a9b3-b62826d68e04'
course.badge_uri = 'badge-foundations.svg'
end

# +++++++++++++++++++++++++++++++
# SECTION - Introduction
# +++++++++++++++++++++++++++++++
course.add_section do |section|
section.title = 'Introduction'
section.description = 'This section will introduce you to the world of web development and The Odin Project.'
section.identifier_uuid = '472bf0bc-2667-4206-84ea-43498b1d67f9'

section.add_lessons(
foundation_lessons.fetch('How This Course Will Work'),
foundation_lessons.fetch('Introduction to Web Development'),
foundation_lessons.fetch('Motivation and Mindset'),
foundation_lessons.fetch('Asking For Help'),
foundation_lessons.fetch('Join the Odin Community'),
)
end

# +++++++++++++++++++++++++++++++
# SECTION - Prerequisites
# +++++++++++++++++++++++++++++++
course.add_section do |section|
section.title = 'Prerequisites'
section.description = 'In this section you\'ll acquire the baseline knowledge before getting into programming. Additionally, you\'ll configure your development environment and install some software necessary for web development.'
section.identifier_uuid = 'a6ff8570-b301-4275-8cb4-1847a8f8ae25'

section.add_lessons(
foundation_lessons.fetch('Computer Basics'),
foundation_lessons.fetch('How Does the Web Work?'),
foundation_lessons.fetch('Installation Overview'),
foundation_lessons.fetch('Installations'),
foundation_lessons.fetch('Text Editors'),
foundation_lessons.fetch('Command Line Basics'),
foundation_lessons.fetch('Setting up Git'),
)
end

# +++++++++++++++++++++++++++++++
# SECTION - Git Basics
# +++++++++++++++++++++++++++++++
course.add_section do |section|
section.title = 'Git Basics'
section.description = 'In this section you will learn the basics of Git and how you can upload your future projects to GitHub so you can share your work and collaborate with others on projects easily.'
section.identifier_uuid = '7fbf3991-88d4-4564-9982-dce53328f037'

section.add_lessons(
git_lessons.fetch('Introduction to Git'),
git_lessons.fetch('Git Basics'),
)
end

# +++++++++++++++++++++++++++++++
# SECTION - HTML
# +++++++++++++++++++++++++++++++
course.add_section do |section|
section.title = 'HTML Foundations'
section.description = 'Learn the foundations of HTML, a fundamental building block of everything on the web.'
section.identifier_uuid = '8b6abb7a-095f-4c1d-b81f-e348aaaf2894'

section.add_lessons(
foundation_lessons.fetch('Introduction to HTML and CSS'),
foundation_lessons.fetch('Elements and Tags'),
foundation_lessons.fetch('HTML Boilerplate'),
foundation_lessons.fetch('Working with Text'),
foundation_lessons.fetch('Lists'),
foundation_lessons.fetch('Links and Images'),
git_lessons.fetch('Commit Messages'),
foundation_lessons.fetch('Recipes'),
)
end

# +++++++++++++++++++++++++++++++
# SECTION - CSS Basics
# +++++++++++++++++++++++++++++++
course.add_section do |section|
section.title = 'CSS Foundations'
section.description = 'Learn how to make your HTML look the way you want by adding styles with CSS.'
section.identifier_uuid = 'd2476929-d71b-4b25-969b-8f7da6a40c94'

section.add_lessons(
foundation_lessons.fetch('Intro to CSS'),
foundation_lessons.fetch('The Cascade'),
foundation_lessons.fetch('Inspecting HTML and CSS'),
foundation_lessons.fetch('The Box Model'),
foundation_lessons.fetch('Block and Inline'),
)
end

# +++++++++++++++++++++++++++++++
# SECTION - HTML
# +++++++++++++++++++++++++++++++
course.add_section do |section|
section.title = 'Flexbox'
section.description = 'Learn how to put things exactly where you want them on your web projects using flexbox.'
section.identifier_uuid = '1cac0d64-f276-4999-8ff1-85d37797c312'

section.add_lessons(
foundation_lessons.fetch('Introduction'),
foundation_lessons.fetch('Growing and Shrinking'),
foundation_lessons.fetch('Axes'),
foundation_lessons.fetch('Alignment'),
foundation_lessons.fetch('Landing Page'),
)
end

# +++++++++++++++++++++++++++++++
# SECTION - JavaScript Basics
# +++++++++++++++++++++++++++++++
course.add_section do |section|
section.title = 'JavaScript Basics'
section.description = 'Here we finally dig into JavaScript and learn how to make the web dynamic.'
section.identifier_uuid = '331227f7-c939-4988-b8b9-e140d2ded362'

section.add_lessons(
foundation_lessons.fetch('Fundamentals Part 1'),
foundation_lessons.fetch('Fundamentals Part 2'),
foundation_lessons.fetch('JavaScript Developer Tools'),
foundation_lessons.fetch('Fundamentals Part 3'),
foundation_lessons.fetch('Problem Solving'),
foundation_lessons.fetch('Understanding Errors'),
foundation_lessons.fetch('Rock Paper Scissors'),
foundation_lessons.fetch('Clean Code'),
foundation_lessons.fetch('Installing Node.js'),
foundation_lessons.fetch('Fundamentals Part 4'),
foundation_lessons.fetch('DOM Manipulation and Events'),
foundation_lessons.fetch('Revisiting Rock Paper Scissors'),
foundation_lessons.fetch('Etch-a-Sketch'),
foundation_lessons.fetch('Fundamentals Part 5'),
foundation_lessons.fetch('Calculator'),
)
end

# +++++++++++++++++++++++++++++++
# SECTION - Conclusion
# +++++++++++++++++++++++++++++++
course.add_section do |section|
section.title = 'Conclusion'
section.description = "Now that you've had a healthy taste of the basics of web development, it's time to choose what specialty path you would like to take."
section.identifier_uuid = '22cbdd2f-785b-40c9-9c54-d21755974df7'

section.add_lessons(
foundation_lessons.fetch('Choose Your Path Forward'),
)
end

# clean up any removed seeds from the database
course.delete_removed_seeds
path.delete_removed_courses
# clean up any removed courses
@path.delete_removed_courses