Skip to content

Commit cb7b816

Browse files
Updated
1 parent 831177d commit cb7b816

File tree

163 files changed

+7386
-21
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

163 files changed

+7386
-21
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.DS_Store

3d-boxes-background/index.html

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<link
7+
rel="stylesheet"
8+
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css"
9+
integrity="sha512-1PKOgIY59xJ8Co8+NE6FZ+LOAZKjy+KY8iq0G4B3CyeY6wYHN3yt9PW0XpSriVlkMXe40PTKnXrLnZ9+fkDaog=="
10+
crossorigin="anonymous"
11+
/>
12+
<link rel="stylesheet" href="style.css" />
13+
<title>3D Boxes Background</title>
14+
</head>
15+
<body>
16+
<button id="btn" class="magic">Magic 🎩</button>
17+
<div id="boxes" class="boxes big"></div>
18+
<script src="script.js"></script>
19+
</body>
20+
</html>

3d-boxes-background/script.js

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
const boxesContainer = document.getElementById('boxes')
2+
const btn = document.getElementById('btn')
3+
4+
btn.addEventListener('click', () => boxesContainer.classList.toggle('big'))
5+
6+
function createBoxes() {
7+
for (let i = 0; i < 4; i++) {
8+
for (let j = 0; j < 4; j++) {
9+
const box = document.createElement('div')
10+
box.classList.add('box')
11+
box.style.backgroundPosition = `${-j * 125}px ${-i * 125}px`
12+
boxesContainer.appendChild(box)
13+
}
14+
}
15+
}
16+
17+
createBoxes()

3d-boxes-background/style.css

+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap');
2+
@import url('https://fonts.googleapis.com/css2?family=Poppins&display=swap');
3+
4+
* {
5+
box-sizing: border-box;
6+
}
7+
8+
body {
9+
background-color: #fafafa;
10+
font-family: 'Roboto', sans-serif;
11+
display: flex;
12+
flex-direction: column;
13+
align-items: center;
14+
justify-content: center;
15+
height: 100vh;
16+
overflow: hidden;
17+
}
18+
19+
.magic {
20+
background-color: #f9ca24;
21+
color: #fff;
22+
font-family: 'Poppins', sans-serif;
23+
border: 0;
24+
border-radius: 3px;
25+
font-size: 16px;
26+
padding: 12px 20px;
27+
cursor: pointer;
28+
position: fixed;
29+
top: 20px;
30+
letter-spacing: 1px;
31+
box-shadow: 0 3px rgba(249, 202, 36, 0.5);
32+
z-index: 100;
33+
}
34+
35+
.magic:focus {
36+
outline: none;
37+
}
38+
39+
.magic:active {
40+
box-shadow: none;
41+
transform: translateY(2px);
42+
}
43+
44+
.boxes {
45+
display: flex;
46+
flex-wrap: wrap;
47+
justify-content: space-around;
48+
height: 500px;
49+
width: 500px;
50+
position: relative;
51+
transition: 0.4s ease;
52+
}
53+
54+
.boxes.big {
55+
width: 600px;
56+
height: 600px;
57+
}
58+
59+
.boxes.big .box {
60+
transform: rotateZ(360deg);
61+
}
62+
63+
.box {
64+
background-image: url('https://media.giphy.com/media/EZqwsBSPlvSda/giphy.gif');
65+
background-repeat: no-repeat;
66+
background-size: 500px 500px;
67+
position: relative;
68+
height: 125px;
69+
width: 125px;
70+
transition: 0.4s ease;
71+
}
72+
73+
.box::after {
74+
content: '';
75+
background-color: #f6e58d;
76+
position: absolute;
77+
top: 8px;
78+
right: -15px;
79+
height: 100%;
80+
width: 15px;
81+
transform: skewY(45deg);
82+
}
83+
84+
.box::before {
85+
content: '';
86+
background-color: #f9ca24;
87+
position: absolute;
88+
bottom: -15px;
89+
left: 8px;
90+
height: 15px;
91+
width: 100%;
92+
transform: skewX(45deg);
93+
}

README.md

+75-21
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,86 @@
1-
# DevSpace Blog
1+
# 50 Projects in 50 Days - HTML/CSS and JavaScript
22

3-
> Static Next.js blog that uses Markdown for posts. Includes pagination, categories and search
3+
This is the main repository for all of the projects in the course.
44

5-
This project is part of my [Next.js Udemy course](https://www.udemy.com/course/nextjs-dev-to-deployment)
5+
- [Course Link](https://www.udemy.com/course/50-projects-50-days)
6+
- [Course Info Website](https://50projects50days.com)
67

7-
![DevSpace Blog](/public/images/screen.png 'DevSpace Blog')
8+
| # | Project | Live Demo |
9+
| :-: | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
10+
| 01 | [Expanding Cards](https://github.com/bradtraversy/50projects50days/tree/master/expanding-cards) | [Live Demo](https://50projects50days.com/projects/expanding-cards/) |
11+
| 02 | [Progress Steps](https://github.com/bradtraversy/50projects50days/tree/master/progress-steps) | [Live Demo](https://50projects50days.com/projects/progress-steps/) |
12+
| 03 | [Rotating Navigation Animation](https://github.com/bradtraversy/50projects50days/tree/master/rotating-nav-animation) | [Live Demo](https://50projects50days.com/projects/rotating-navigation-animation/) |
13+
| 04 | [Hidden Search Widget](https://github.com/bradtraversy/50projects50days/tree/master/hidden-search) | [Live Demo](https://50projects50days.com/projects/hidden-search-widget/) |
14+
| 05 | [Blurry Loading](https://github.com/bradtraversy/50projects50days/tree/master/blurry-loading) | [Live Demo](https://50projects50days.com/projects/blurry-loading/) |
15+
| 06 | [Scroll Animation](https://github.com/bradtraversy/50projects50days/tree/master/scroll-animation) | [Live Demo](https://50projects50days.com/projects/scroll-animation/) |
16+
| 07 | [Split Landing Page](https://github.com/bradtraversy/50projects50days/tree/master/split-landing-page) | [Live Demo](https://50projects50days.com/projects/split-landing-page/) |
17+
| 08 | [Form Wave](https://github.com/bradtraversy/50projects50days/tree/master/form-input-wave) | [Live Demo](https://50projects50days.com/projects/form-wave/) |
18+
| 09 | [Sound Board](https://github.com/bradtraversy/50projects50days/tree/master/sound-board) | [Live Demo](https://50projects50days.com/projects/sound-board/) |
19+
| 10 | [Dad Jokes](https://github.com/bradtraversy/50projects50days/tree/master/dad-jokes) | [Live Demo](https://50projects50days.com/projects/dad-jokes/) |
20+
| 11 | [Event Keycodes](https://github.com/bradtraversy/50projects50days/tree/master/event-keycodes) | [Live Demo](https://50projects50days.com/projects/event-keycodes/) |
21+
| 12 | [Faq Collapse](https://github.com/bradtraversy/50projects50days/tree/master/faq-collapse) | [Live Demo](https://50projects50days.com/projects/faq-collapse/) |
22+
| 13 | [Random Choice Picker](https://github.com/bradtraversy/50projects50days/tree/master/random-choice-picker) | [Live Demo](https://50projects50days.com/projects/random-choice-picker/) |
23+
| 14 | [Animated Navigation](https://github.com/bradtraversy/50projects50days/tree/master/animated-navigation) | [Live Demo](https://50projects50days.com/projects/animated-navigation/) |
24+
| 15 | [Incrementing Counter](https://github.com/bradtraversy/50projects50days/tree/master/incrementing-counter) | [Live Demo](https://50projects50days.com/projects/incrementing-counter/) |
25+
| 16 | [Drink Water](https://github.com/bradtraversy/50projects50days/tree/master/drink-water) | [Live Demo](https://50projects50days.com/projects/drink-water/) |
26+
| 17 | [Movie App](https://github.com/bradtraversy/50projects50days/tree/master/movie-app) | [Live Demo](https://50projects50days.com/projects/movie-app/) |
27+
| 18 | [Background Slider](https://github.com/bradtraversy/50projects50days/tree/master/background-slider) | [Live Demo](https://50projects50days.com/projects/background-slider/) |
28+
| 19 | [Theme Clock](https://github.com/bradtraversy/50projects50days/tree/master/theme-clock) | [Live Demo](https://50projects50days.com/projects/theme-clock/) |
29+
| 20 | [Button Ripple Effect](https://github.com/bradtraversy/50projects50days/tree/master/button-ripple-effect) | [Live Demo](https://50projects50days.com/projects/button-ripple-effect/) |
30+
| 21 | [Drag N Drop](https://github.com/bradtraversy/50projects50days/tree/master/drag-n-drop) | [Live Demo](https://50projects50days.com/projects/drag-n-drop/) |
31+
| 22 | [Drawing App](https://github.com/bradtraversy/50projects50days/tree/master/drawing-app) | [Live Demo](https://50projects50days.com/projects/drawing-app/) |
32+
| 23 | [Kinetic Loader](https://github.com/bradtraversy/50projects50days/tree/master/kinetic-loader) | [Live Demo](https://50projects50days.com/projects/kinetic-loader/) |
33+
| 24 | [Content Placeholder](https://github.com/bradtraversy/50projects50days/tree/master/content-placeholder) | [Live Demo](https://50projects50days.com/projects/content-placeholder/) |
34+
| 25 | [Sticky Navbar](https://github.com/bradtraversy/50projects50days/tree/master/sticky-navigation) | [Live Demo](https://50projects50days.com/projects/sticky-navbar/) |
35+
| 26 | [Double Vertical Slider](https://github.com/bradtraversy/50projects50days/tree/master/double-vertical-slider) | [Live Demo](https://50projects50days.com/projects/double-vertical-slider/) |
36+
| 27 | [Toast Notification](https://github.com/bradtraversy/50projects50days/tree/master/toast-notification) | [Live Demo](https://50projects50days.com/projects/toast-notification/) |
37+
| 28 | [Github Profiles](https://github.com/bradtraversy/50projects50days/tree/master/github-profiles) | [Live Demo](https://50projects50days.com/projects/github-profiles/) |
38+
| 29 | [Double Click Heart](https://github.com/bradtraversy/50projects50days/tree/master/double-click-heart) | [Live Demo](https://50projects50days.com/projects/double-click-heart/) |
39+
| 30 | [Auto Text Effect](https://github.com/bradtraversy/50projects50days/tree/master/auto-text-effect) | [Live Demo](https://50projects50days.com/projects/auto-text-effect/) |
40+
| 31 | [Password Generator](https://github.com/bradtraversy/50projects50days/tree/master/password-generator) | [Live Demo](https://50projects50days.com/projects/password-generator/) |
41+
| 32 | [Good Cheap Fast](https://github.com/bradtraversy/50projects50days/tree/master/good-cheap-fast) | [Live Demo](https://50projects50days.com/projects/good-cheap-fast/) |
42+
| 33 | [Notes App](https://github.com/bradtraversy/50projects50days/tree/master/notes-app) | [Live Demo](https://50projects50days.com/projects/notes-app/) |
43+
| 34 | [Animated Countdown](https://github.com/bradtraversy/50projects50days/tree/master/animated-countdown) | [Live Demo](https://50projects50days.com/projects/animated-countdown/) |
44+
| 35 | [Image Carousel](https://github.com/bradtraversy/50projects50days/tree/master/image-carousel) | [Live Demo](https://50projects50days.com/projects/image-carousel/) |
45+
| 36 | [Hoverboard](https://github.com/bradtraversy/50projects50days/tree/master/hoverboard) | [Live Demo](https://50projects50days.com/projects/hoverboard/) |
46+
| 37 | [Pokedex](https://github.com/bradtraversy/50projects50days/tree/master/pokedex) | [Live Demo](https://50projects50days.com/projects/pokedex/) |
47+
| 38 | [Mobile Tab Navigation](https://github.com/bradtraversy/50projects50days/tree/master/mobile-tab-navigation) | [Live Demo](https://50projects50days.com/projects/mobile-tab-navigation/) |
48+
| 39 | [Password Strength Background](https://github.com/bradtraversy/50projects50days/tree/master/password-strength-background) | [Live Demo](https://50projects50days.com/projects/password-strength-background/) |
49+
| 40 | [3d Background Boxes](https://github.com/bradtraversy/50projects50days/tree/master/3d-boxes-background) | [Live Demo](https://50projects50days.com/projects/3d-background-boxes/) |
50+
| 41 | [Verify Account Ui](https://github.com/bradtraversy/50projects50days/tree/master/verify-account-ui) | [Live Demo](https://50projects50days.com/projects/verify-account-ui/) |
51+
| 42 | [Live User Filter](https://github.com/bradtraversy/50projects50days/tree/master/live-user-filter) | [Live Demo](https://50projects50days.com/projects/live-user-filter/) |
52+
| 43 | [Feedback Ui Design](https://github.com/bradtraversy/50projects50days/tree/master/feedback-ui-design) | [Live Demo](https://50projects50days.com/projects/feedback-ui-design/) |
53+
| 44 | [Custom Range Slider](https://github.com/bradtraversy/50projects50days/tree/master/custom-range-slider) | [Live Demo](https://50projects50days.com/projects/custom-range-slider/) |
54+
| 45 | [Netflix Mobile Navigation](https://github.com/bradtraversy/50projects50days/tree/master/netflix-mobile-navigation) | [Live Demo](https://50projects50days.com/projects/netflix-mobile-navigation/) |
55+
| 46 | [Quiz App](https://github.com/bradtraversy/50projects50days/tree/master/quiz-app) | [Live Demo](https://50projects50days.com/projects/quiz-app/) |
56+
| 47 | [Testimonial Box Switcher](https://github.com/bradtraversy/50projects50days/tree/master/testimonial-box-switcher) | [Live Demo](https://50projects50days.com/projects/testimonial-box-switcher/) |
57+
| 48 | [Random Image Feed](https://github.com/bradtraversy/50projects50days/tree/master/random-image-generator) | [Live Demo](https://50projects50days.com/projects/random-image-feed/) |
58+
| 49 | [Todo List](https://github.com/bradtraversy/50projects50days/tree/master/todo-list) | [Live Demo](https://50projects50days.com/projects/todo-list/) |
59+
| 50 | [Insect Catch Game](https://github.com/bradtraversy/50projects50days/tree/master/insect-catch-game) | [Live Demo](https://50projects50days.com/projects/insect-catch-game/) |
860

9-
[VIEW DEMO](https://devspace-blog-pearl.vercel.app)
61+
**NOTE ON PULL REQUESTS**: All of these projects are part of the course. While I do appreciate people trying to make some things prettier or adding new features, we are only accepting pull requests and looking at issues for bug fixes so that the code stays inline with the course
1062

11-
## Usage
63+
## License
1264

13-
### Install Dependencies
14-
```bash
15-
npm install
16-
```
65+
The MIT License
1766

18-
### Run Dev Server (http://localhost:3000)
19-
```bash
20-
npm run dev
21-
```
67+
Copyright (c) 2020-2021 Traversy Media https://traversymedia.com
2268

23-
### Creating posts
69+
Permission is hereby granted, free of charge, to any person obtaining a copy
70+
of this software and associated documentation files (the "Software"), to deal
71+
in the Software without restriction, including without limitation the rights
72+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
73+
copies of the Software, and to permit persons to whom the Software is
74+
furnished to do so, subject to the following conditions:
2475

25-
* Create a markdown file in the "posts" folder and name it whatever you want as the slug
26-
* Add the frontmatter/fields at the top and then the post body. See an example in the "posts" folder of this repo
27-
* Add your cover image and author image in the public/images folder
28-
* For category color coding, edit the "Components/CategoryLabel.js" file
76+
The above copyright notice and this permission notice shall be included in
77+
all copies or substantial portions of the Software.
2978

30-
### Caching
79+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
80+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
81+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
82+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
83+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
84+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
85+
THE SOFTWARE.
3186

32-
Husky is used to run a cache script on git commit. Caching is used for the search api route/serverless function

_project_starter_/index.html

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<link rel="stylesheet" href="style.css" />
7+
<title>My Project</title>
8+
</head>
9+
<body>
10+
<h1>Project Starter</h1>
11+
<script src="script.js"></script>
12+
</body>
13+
</html>

_project_starter_/script.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

_project_starter_/style.css

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap');
2+
3+
* {
4+
box-sizing: border-box;
5+
}
6+
7+
body {
8+
font-family: 'Roboto', sans-serif;
9+
display: flex;
10+
flex-direction: column;
11+
align-items: center;
12+
justify-content: center;
13+
height: 100vh;
14+
overflow: hidden;
15+
margin: 0;
16+
}

animated-countdown/index.html

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<link rel="stylesheet" href="style.css" />
7+
<title>Animated Countdown</title>
8+
</head>
9+
<body>
10+
<div class="counter">
11+
<div class="nums">
12+
<span class="in">3</span>
13+
<span>2</span>
14+
<span>1</span>
15+
<span>0</span>
16+
</div>
17+
<h4>Get Ready</h4>
18+
</div>
19+
20+
<div class="final">
21+
<h1>GO</h1>
22+
<button id="replay">
23+
<span>Replay</span>
24+
</button>
25+
</div>
26+
<script src="script.js"></script>
27+
</body>
28+
</html>

animated-countdown/script.js

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
const nums = document.querySelectorAll('.nums span')
2+
const counter = document.querySelector('.counter')
3+
const finalMessage = document.querySelector('.final')
4+
const replay = document.querySelector('#replay')
5+
6+
runAnimation()
7+
8+
function resetDOM() {
9+
counter.classList.remove('hide')
10+
finalMessage.classList.remove('show')
11+
12+
nums.forEach((num) => {
13+
num.classList.value = ''
14+
})
15+
16+
nums[0].classList.add('in')
17+
}
18+
19+
function runAnimation() {
20+
nums.forEach((num, idx) => {
21+
const nextToLast = nums.length - 1
22+
23+
num.addEventListener('animationend', (e) => {
24+
if (e.animationName === 'goIn' && idx !== nextToLast) {
25+
num.classList.remove('in')
26+
num.classList.add('out')
27+
} else if (e.animationName === 'goOut' && num.nextElementSibling) {
28+
num.nextElementSibling.classList.add('in')
29+
} else {
30+
counter.classList.add('hide')
31+
finalMessage.classList.add('show')
32+
}
33+
})
34+
})
35+
}
36+
37+
replay.addEventListener('click', () => {
38+
resetDOM()
39+
runAnimation()
40+
})

0 commit comments

Comments
 (0)