├── .gitignore
├── README.md
├── advertize
├── README.md
└── text-animation-with-recording.js
├── axit-home-page
├── .gitignore
├── css
│ ├── main.css
│ ├── main.css.map
│ ├── main.min.css
│ ├── main.min.css.map
│ └── main.prefixed.css
├── images
│ ├── Logo.svg
│ ├── about
│ │ └── card-icons
│ │ │ ├── keyboard.png
│ │ │ ├── light-bulb.png
│ │ │ ├── light-bulb.svg
│ │ │ └── lightning.png
│ ├── brand-bar
│ │ ├── Social Media Icons.png
│ │ └── Social Media Icons.svg
│ ├── custom
│ │ └── u25_state0.png
│ ├── features
│ │ ├── image_left_sub_list_u260.png
│ │ ├── image_right_standard_u262.png
│ │ ├── image_right_u255.png
│ │ └── .svg
│ ├── footer
│ │ ├── social-media-icons.png
│ │ └── .svg
│ ├── hero-section
│ │ ├── Logo.png
│ │ ├── Logo.svg
│ │ └── background-image-large.png
│ ├── pricing
│ │ ├── $0.png
│ │ ├── $0.svg
│ │ ├── $19.png
│ │ ├── $19.svg
│ │ ├── $70.png
│ │ └── $70.svg
│ └── tesimonials
│ │ ├── avatar_2_u231.png
│ │ ├── u229.png
│ │ └── u229.svg
├── index.html
├── js
│ └── main.js
├── package-lock.json
├── package.json
├── postcss.config.js
└── sass
│ ├── main.scss
│ └── partials
│ ├── _base.scss
│ ├── _components.scss
│ ├── _mixins.scss
│ ├── _variables.scss
│ └── layout
│ ├── _footer.scss
│ ├── _header.scss
│ └── sections
│ ├── _about.scss
│ ├── _brand-bar.scss
│ ├── _contact-us.scss
│ ├── _custom-section.scss
│ ├── _features.scss
│ ├── _hero.scss
│ ├── _pricing.scss
│ └── _testimonials.scss
├── dance-tour
├── .vscode
│ └── settings.json
├── assets
│ └── images
│ │ ├── Facebook.svg
│ │ ├── Instagram.svg
│ │ ├── Twitter.svg
│ │ ├── WhatsApp.svg
│ │ ├── about-img-1.png
│ │ ├── about-img-2.png
│ │ ├── dance-card-1.png
│ │ ├── dance-card-2.png
│ │ ├── dance-card-3.png
│ │ ├── hero.png
│ │ ├── logo.svg
│ │ ├── medal-img.svg
│ │ └── quote-img.png
├── css
│ ├── animations.css
│ ├── base.css
│ ├── components.css
│ ├── layout.css
│ ├── media-queries.css
│ ├── sections
│ │ ├── about.css
│ │ ├── hero.css
│ │ ├── product.css
│ │ ├── promo.css
│ │ ├── quote.css
│ │ ├── statistics.css
│ │ └── subscribe.css
│ ├── utilties.css
│ └── variables.css
├── index.html
└── src
│ └── script.js
├── dice-roll-simulator
├── index.html
├── index.js
└── style.css
├── guess-my-number
├── .prettierrc
├── index.html
├── package.json
├── queries.css
├── script.js
├── style.css
└── utils.js
├── modal
├── .prettierrc
├── index.html
├── queries.css
├── script.js
└── style.css
├── pig-game
├── .prettierrc
├── dice-1.png
├── dice-2.png
├── dice-3.png
├── dice-4.png
├── dice-5.png
├── dice-6.png
├── index.html
├── queries.css
├── script.js
└── style.css
├── space-invaders
├── app.js
├── img
│ ├── ESA_root_pillars.jpg
│ ├── cartoon-spaceship-illustration-vector.jpg
│ ├── images.jpg
│ └── istockphoto-1035676256-612x612.jpg
├── index.html
├── package.json
├── style.css
└── util.js
├── space-shooter-game-new
├── background1.webp
├── enemy-fotor.png
├── first-aid-kit.png
├── heroShip.png
├── index.html
├── old-background-photo
│ └── background1.jpg
├── script.js
└── style.css
├── winters
├── .gitignore
├── css
│ ├── fonts
│ │ ├── linea-basic-10.eot
│ │ ├── linea-basic-10.svg
│ │ ├── linea-basic-10.ttf
│ │ └── linea-basic-10.woff
│ ├── icon-font.css
│ ├── style.comp.css
│ ├── style.concat.css
│ ├── style.css
│ └── style.prefix.css
├── img
│ ├── book-small.webp
│ ├── book.webp
│ ├── favicon.png
│ ├── heli-ski-large.webp
│ ├── heli-ski-small.webp
│ ├── hero-small.webp
│ ├── hero.webp
│ ├── ladySnowboarder-1-large.jpg
│ ├── ladySnowboarder-1-small.jpg
│ ├── logo-blue-1.png
│ ├── logo-blue-small-1.png
│ ├── logo-blue-small-2.png
│ ├── logo-white.png
│ ├── new-heli-large.webp
│ ├── new-heli-small.webp
│ ├── new-ninja-large.webp
│ ├── new-ninja-small.webp
│ ├── schtilthorn.webp
│ ├── skier-large.jpg
│ ├── skier-small.jpg
│ ├── skiingman-new-small.webp
│ ├── skiingman-new.webp
│ ├── snowboarder-large.jpg
│ ├── snowboarder-small.jpg
│ ├── snowboarding-new-small.webp
│ ├── snowboarding-new.webp
│ ├── treck-large.webp
│ ├── treck-small.webp
│ ├── video-snow.mp4
│ └── video-snow.webm
├── index.html
├── js
│ └── script.js
├── package-lock.json
├── package.json
└── sass
│ ├── abstracts
│ ├── _functions.scss
│ ├── _mixins.scss
│ └── _variables.scss
│ ├── base
│ ├── _animations.scss
│ ├── _base.scss
│ ├── _typography.scss
│ └── _utilities.scss
│ ├── components
│ ├── _bg-video.scss
│ ├── _button.scss
│ ├── _card.scss
│ ├── _composition.scss
│ ├── _feature-box.scss
│ ├── _form.scss
│ ├── _popup.scss
│ └── _story.scss
│ ├── layout
│ ├── _footer.scss
│ ├── _grid.scss
│ ├── _header.scss
│ └── _navigation.scss
│ ├── main.scss
│ └── pages
│ └── _home.scss
└── оmnifood
├── css
├── general.css
├── queries.css
└── style.css
├── img
├── android-192.png
├── android-512.png
├── app
│ ├── app-screen-1.png
│ ├── app-screen-2.png
│ └── app-screen-3.png
├── apple-touch-icon.png
├── customers
│ ├── ben.jpg
│ ├── customer-1.jpg
│ ├── customer-2.jpg
│ ├── customer-3.jpg
│ ├── customer-4.jpg
│ ├── customer-5.jpg
│ ├── customer-6.jpg
│ ├── dave.jpg
│ ├── hannah.jpg
│ └── steve.jpg
├── eating.jpg
├── favicon.png
├── favicon1.png
├── gallery
│ ├── gallery-1.jpg
│ ├── gallery-10.jpg
│ ├── gallery-11.jpg
│ ├── gallery-12.jpg
│ ├── gallery-2.jpg
│ ├── gallery-3.jpg
│ ├── gallery-4.jpg
│ ├── gallery-5.jpg
│ ├── gallery-6.jpg
│ ├── gallery-7.jpg
│ ├── gallery-8.jpg
│ └── gallery-9.jpg
├── hero-min.png
├── hero.png
├── hero.webp
├── logos
│ ├── business-insider.png
│ ├── forbes.png
│ ├── techcrunch.png
│ ├── the-new-york-times.png
│ └── usa-today.png
├── meals
│ ├── meal-1.jpg
│ └── meal-2.jpg
└── omnifood-logo.png
├── index.html
├── js
└── script.js
└── manifest.webmanifest
/README.md:
--------------------------------------------------------------------------------
1 | # Simple Projects Portfolio
2 |
3 | Welcome to my repository where I collect simple projects that I have created to practice and develop my coding skills. Below you can find details and links to each project.
4 |
5 | ## Projects
6 |
7 | ### [Advertize](https://github.com/Nikolaj-Georgiev/simple-html-css-js-projects/tree/2e8da5c274c1d63c410e3d47f7d081d9041d5055/advertize)
8 | A script that replaces the current page content with an animated text display and records the animation into a downloadable video file.
9 |
10 | **Usage Instructions:**
11 | 1. Clone the repository and navigate to the `advertize` folder.
12 | 2. Include the script in your HTML file:
13 | ```html
14 |
15 | ```
16 | 3. Alternatively, copy the script into the browser's developer tools console and run it.
17 | 4. The animation starts automatically, replacing the page content.
18 | 5. Use the stop button (`X`) to end the animation and download the video.
19 |
20 | **Tech Stack:**
21 | - Built with JavaScript and HTML5 Canvas API.
22 |
23 | ### [Roll Dice Simulator](https://dice-roll-sim.netlify.app)
24 | A simple dice roll simulator that generates random dice rolls with a click of a button.
25 |
26 | **Tech Stack:**
27 | - Built with HTML, CSS and JavaScript.
28 |
29 | ### [Pig Game](https://pig-game-gnikolay.netlify.app/)
30 | Pig Game is a two-player dice game where the goal is to score 100 points first. Players take turns rolling the dice, adding the rolled value to their current score, and can either hold to save their score or risk rolling again. Rolling a 1 resets the current score and ends the turn. Simple, fun, and strategic.
31 |
32 | **Tech Stack:**
33 | - Built with HTML, CSS and JavaScript.
34 |
35 | ### [Guess My Number](https://guess-my-number-gnikolay.netlify.app/)
36 | Guess My Number is a simple number-guessing game where the player tries to guess a randomly generated number between 1 and 20. The game provides feedback if the guess is too high or low. The player wins by guessing the correct number, with the goal of doing so in the fewest attempts possible. Fun and challenging!
37 |
38 | **Tech Stack:**
39 | - Built with HTML, CSS and JavaScript.
40 |
41 | ### [Modal](https://gnikolay-modal.netlify.app/)
42 | Modal is a project showcasing how to create and manage a popup modal window using HTML, CSS, and JavaScript. The modal appears when triggered (e.g., by a button) and can be closed by clicking a close button or outside the modal.
43 |
44 | **Tech Stack:**
45 | - Built with HTML, CSS and JavaScript.
46 |
47 | ### [Space Invaders](https://space-invaders-basic.netlify.app)
48 | A basic version of the classic Space Invaders game.
49 |
50 | **How to Play:**
51 | - The game starts automatically.
52 | - Use the left and right arrow keys on your keyboard to move the spaceship.
53 | - Press the space bar to shoot.
54 | - **Note:** The game is not optimized for mobile devices.
55 |
56 | ### [Space Invaders 2](https://space-invaders-gnikolay.netlify.app)
57 | An updated version of the Space Invaders game, designed to be played on any device.
58 |
59 | **Features:**
60 | - Slow auto-shoot functionality.
61 | - Additional shooting with the left mouse button or by touch on mobile devices.
62 | - Scoring is easier on smaller screens due to the increased number of enemies.
63 |
64 | **Known Issues:**
65 | - Some design flaws exist, but this is my first project using the canvas element. Despite the imperfections, I hope it's enjoyable!
66 |
67 | ### [Winters](https://winters-ngn.netlify.app)
68 | A home page designed for a winter tours company.
69 |
70 | **Tech Stack:**
71 | - Built using old school advanced CSS techniques with SCSS.
72 |
73 | ### [Omnifood](https://omnifood-ng.netlify.app)
74 | A home page for a food delivery company.
75 |
76 | **Tech Stack:**
77 | - Built with pure CSS and a few lines of JavaScript.
78 |
79 | ### [Dance Tour](https://dance-tour-nikolaj-georgiev.netlify.app/)
80 | A home page for a dance lesons company.
81 |
82 | **Tech Stack:**
83 | - Built with HTML, CSS and JavaScript.
84 |
85 | ### [Axit Home Page](https://axit-home-page-ng.netlify.app/)
86 | A home page for Axit company.
87 |
88 | **Tech Stack:**
89 | - Built with HTML, CSS, SCSS and JavaScript.
90 |
91 | ## Notes
92 |
93 | - All projects are hosted on Netlify for easy access.
94 | - Feedback and contributions are welcome!
95 |
96 | ---
97 |
98 | Thank you for taking the time to explore my projects. If you have any suggestions or improvements, feel free to reach out or submit an issue.
99 |
--------------------------------------------------------------------------------
/advertize/README.md:
--------------------------------------------------------------------------------
1 | # Text Animation with Recording
2 |
3 | This project showcases an interactive JavaScript script that extracts visible text from a webpage, animates it on a canvas, and records the animation as a video file.
4 |
5 | ## Features
6 |
7 | - Extracts visible text dynamically from any webpage.
8 | - Animates text with smooth transitions (fade-in, display, fade-out).
9 | - Records the animation and saves it as a video file.
10 | - Fully responsive, resizing the canvas dynamically to fit the browser window.
11 | - Allows stopping the animation and recording at any time.
12 |
13 | ## How to Use
14 |
15 | ### Option 1: Using as a Standalone Script
16 |
17 | 1. Clone the repository or copy the script.
18 | 2. Include the script in your HTML file:
19 |
20 | ```html
21 |
22 | ```
23 |
24 | 3. Open the HTML file in a browser.
25 | 4. The script will start automatically, displaying the animation.
26 | 5. Use the stop button (`X`) to end the animation and download the video.
27 |
28 | ### Option 2: Running in Browser Developer Tools
29 |
30 | 1. Copy the script into the browser's developer tools console.
31 | 2. Run the script.
32 | 3. The animation will start automatically, replacing the current content with a canvas overlay.
33 | 4. A stop button (`X`) is available to stop the animation and recording.
34 | 5. Once the animation completes or is stopped, a video file (`animation.webm` or another supported format) is automatically downloaded.
35 |
36 | ## How It Works
37 |
38 | 1. **Extracting Text:**
39 |
40 | - The script traverses the DOM using a `TreeWalker` to collect all visible text nodes, ignoring hidden or irrelevant elements (e.g., `
18 |