├── README.md ├── docker └── Wordpress │ ├── README.md │ └── docker-compose.yml ├── guides ├── Articles.md ├── DigitalOceanSetupGuide.md └── WSLSetupGuide.md ├── interviews └── WebDeveloperInterviewQuestions.md ├── resources ├── Apis.md ├── Assets.md ├── Cloud.md ├── DigitalOcean.md ├── HtmlAndCss.md ├── Javascript.md ├── Learning.md ├── Mobile.md ├── Php.md ├── README.md ├── Utilities.md └── Wordpress.md └── vscode ├── README.md └── vscode.settings.json /README.md: -------------------------------------------------------------------------------- 1 | # Web Development Resources, Guides, and More! 2 | 3 | > Below you will find a list of resources, technical guides, and other useful things that I have compiled over the years in web development. 4 | 5 | ## Web Development Resources 6 | 7 | [All Resources](resources/README.md) 8 | 9 | ## Technical Guides 10 | 11 | - [Digital Ocean Server Setup Guide](guides/DigitalOceanSetupGuide.md) 12 | - [Windows Subsystem for Linux Guide](guides/WSLSetupGuide.md) 13 | - [Other Articles](guides/Articles.md) 14 | 15 | ## Job Interview Questions and Practice 16 | 17 | - [PHP Interview Exercises](https://github.com/azdanov/php-interview-exercises) 18 | - [Web Developer Interview Questions](interviews/WebDeveloperInterviewQuestions.md) 19 | 20 | ## My Visual Studio Code Settings 21 | 22 | - [My Extensions](vscode/README.md) 23 | - [My vscode.settings.json](vscode/vscode.settings.json) 24 | 25 | ## Docker Images 26 | 27 | - [LAMP](https://github.com/cdterry87/docker-compose-lamp) - To setup a Linux, Apache, MySQL, and PHP development environment with no need to install or set them up manually. Only requires Docker to be installed. (Forked from [https://github.com/sprintcube/docker-compose-lamp](https://github.com/sprintcube/docker-compose-lamp)) 28 | - [Wordpress](/docker/Wordpress/README.md) - To setup a development environment with Wordpress installed. 29 | -------------------------------------------------------------------------------- /docker/Wordpress/README.md: -------------------------------------------------------------------------------- 1 | # Wordpress docker-compose.yml 2 | 3 | > To create a docker container to run Wordpress with MySQL. 4 | 5 | ## How to use it 6 | 7 | 1. Make sure you have Docker installed. 8 | 9 | 2. Copy the [docker-compose.yml](docker-compose.yml) 10 | 11 | 3. Build the docker container. This will take several minutes to create your container and copy all the necessary files over. 12 | 13 | ``` 14 | docker-compose up -d 15 | ``` 16 | 17 | 4. Once the container has finished building, go to `http://localhost:8000` in your browser and go through the Wordpress installation. 18 | 19 | 5. Start modifying your Wordpress site! 20 | -------------------------------------------------------------------------------- /docker/Wordpress/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | db: 4 | image: mysql:latest 5 | restart: always 6 | environment: 7 | MYSQL_ROOT_PASSWORD: password 8 | MYSQL_DATABASE: wordpress 9 | MYSQL_USER: wordpress 10 | MYSQL_PASSWORD: password 11 | wordpress: 12 | depends_on: 13 | - db 14 | image: wordpress:latest 15 | restart: always 16 | ports: 17 | - "8000:80" # http://localhost:8000 18 | environment: 19 | WORDPRESS_DB_HOST: db:3306 20 | WORDPRESS_DB_USER: wordpress 21 | WORDPRESS_DB_PASSWORD: password 22 | WORDPRESS_DB_NAME: wordpress 23 | volumes: 24 | ["./:/var/www/html"] 25 | volumes: 26 | mysql: {} 27 | -------------------------------------------------------------------------------- /guides/Articles.md: -------------------------------------------------------------------------------- 1 | # Other Articles 2 | 3 | ## How to... 4 | 5 | - [Deploy a Vue App to Github Pages](https://learnvue.co/articles/deploy-vue-to-github-pages#step-4-run-git-subtree-push-prefix-dist-origin-gh-pages) 6 | 7 | - [Deploy a React App to Github Pages](https://blog.logrocket.com/deploying-react-apps-github-pages/) 8 | -------------------------------------------------------------------------------- /guides/DigitalOceanSetupGuide.md: -------------------------------------------------------------------------------- 1 | # Digital Ocean Guide 2 | 3 | This is a list of helpful links for setting up a Digital Ocean box for Web Development with PHP. 4 | 5 | ## Link a Domain 6 | 7 | https://www.digitalocean.com/community/tutorials/how-to-point-to-digitalocean-nameservers-from-common-domain-registrars 8 | 9 | ## Initial Server Setup 10 | 11 | https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04 12 | 13 | ## Setup LAMP stack 14 | 15 | https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-ubuntu-18-04 16 | 17 | ## Reset MySQL password 18 | 19 | https://www.digitalocean.com/community/tutorials/how-to-reset-your-mysql-or-mariadb-root-password-on-ubuntu-18-04 20 | 21 | ## Setup Mod Rewrite in Apache for cleaner URLs 22 | 23 | https://www.digitalocean.com/community/tutorials/how-to-rewrite-urls-with-mod_rewrite-for-apache-on-ubuntu-16-04 24 | 25 | ## Install Git 26 | 27 | https://www.digitalocean.com/community/tutorials/how-to-install-git-on-ubuntu-18-04 28 | 29 | ## Install Composer and NodeJS 30 | 31 | https://www.digitalocean.com/community/tutorials/how-to-install-and-use-composer-on-ubuntu-18-04 32 | https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-18-04 33 | 34 | ## Deploy Laravel to DigitalOcean 35 | 36 | https://medium.com/@franciscojbarrera/how-to-deploy-laravel-on-digital-ocean-lamp-e69046906fe 37 | 38 | ## Advanced Setup 39 | 40 | ### Setup Virtual Hosts 41 | 42 | https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04 43 | 44 | ### Setup SSL Certificates with LetsEncrypt 45 | 46 | https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-18-04 47 | 48 | #### Bonus - Setting up SSL Cert with a wildcard 49 | 50 | ``` 51 | sudo certbot certonly --manual --preferred-challenges=dns --server=https://acme-v02.api.letsencrypt.org/directory --agree-tos -d yourtld.com,*.yourtld.com 52 | ``` 53 | -------------------------------------------------------------------------------- /guides/WSLSetupGuide.md: -------------------------------------------------------------------------------- 1 | # Setup WSL for Web Development on Windows 2 | 3 | ## Enable/Install WSL 4 | 5 | Open a command prompt (as administrator) and type: 6 | 7 | ``` 8 | Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux 9 | ``` 10 | 11 | Then go to the Microsoft Store and type `Ubuntu` into the search. Install Ubuntu, and then Launch it when the install is complete. 12 | 13 | When the terminal opens and the install is complete, you should be prompted to create your user account. Create your username and password. 14 | 15 | ## Setup Git 16 | 17 | ``` 18 | git config --global user.name "Your Name" 19 | git config --global user.email "youremail@domain.com" 20 | ``` 21 | 22 | ## Get cURL 23 | 24 | ``` 25 | sudo apt-get install curl 26 | ``` 27 | 28 | ## Install NVM and Node 29 | 30 | ``` 31 | curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash 32 | ``` 33 | 34 | Then close and reopen Ubuntu terminal and then type: 35 | 36 | ``` 37 | nvm install node 38 | ``` 39 | 40 | ## Install Vue CLI 41 | 42 | ``` 43 | npm install -g @vue/CLI 44 | ``` 45 | 46 | ## Install Apache 47 | 48 | ``` 49 | sudo apt update 50 | sudo apt install apache2 51 | sudo service apache2 start 52 | ``` 53 | 54 | ### Apache Commands 55 | 56 | ``` 57 | sudo service apache2 start 58 | sudo service apache2 restart 59 | sudo service apache2 stop 60 | ``` 61 | 62 | By default, the DocumentRoot is set to `/var/www/html`. To change it: 63 | 64 | ``` 65 | sudo vi /etc/apache2/sites-available/000-default.conf 66 | sudo service apache2 restart 67 | ``` 68 | 69 | Change DocumentRoot from `DocumentRoot /var/www/html` to your own specified directory. 70 | 71 | You may also want to change the permissions on your DocumentRoot directory. If you changed your DocumentRoot directory using the instructions above, change `/var/www/html` in the example below to the directory you specified. 72 | 73 | ``` 74 | sudo chown your-user:your-user -R /var/www/html 75 | ``` 76 | 77 | ## Install MySQL 78 | 79 | ``` 80 | sudo apt install mysql-server 81 | sudo service mysql start 82 | sudo mysql 83 | ``` 84 | 85 | To set a password for mysql's root user 86 | 87 | ``` 88 | ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; 89 | FLUSH PRIVILEGES; 90 | SELECT user,authentication_string,plugin,host FROM mysql.user; 91 | exit; 92 | ``` 93 | 94 | ## Install PHP 95 | 96 | ``` 97 | sudo apt install php libapache2-mod-php php-mysql 98 | ``` 99 | 100 | Allow Apache to serve .php files 101 | 102 | ``` 103 | sudo vi /etc/apache2/mods-enabled/dir.conf 104 | ``` 105 | 106 | Modify it to look like this: 107 | 108 | ``` 109 | 110 | DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm 111 | 112 | ``` 113 | 114 | Then restart Apache 115 | 116 | ``` 117 | sudo service apache2 restart 118 | ``` 119 | 120 | Install php cli 121 | 122 | ``` 123 | sudo apt install php-cli 124 | ``` 125 | 126 | Install phpmyadmin 127 | 128 | ``` 129 | sudo apt install phpmyadmin php-mbstring php-gettext 130 | ``` 131 | 132 | When installing phpmyadmin, a prompt will come up to specify a password for phpmyadmin. After specifying a password, you will need to specify the webserver. Press "SPACE" to select apache2 then click Enter. 133 | 134 | ``` 135 | sudo phpenmod mbstring 136 | sudo service apache2 restart 137 | ``` 138 | 139 | Then test it by going to [http://localhost/phpmyadmin] in a browser 140 | 141 | ## Install Composer 142 | 143 | ``` 144 | cd ~ 145 | curl -sS https://getcomposer.org/installer -o composer-setup.php 146 | sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer 147 | php composer-setup.php 148 | sudo mv composer.phar /usr/local/bin/composer 149 | ``` 150 | 151 | ## Install Laravel Installer 152 | 153 | ``` 154 | composer global require laravel/installer 155 | echo 'export PATH="$PATH:$HOME/.composer/vendor/bin"' >> ~/.bashrc 156 | ``` 157 | 158 | Test it with the following command: 159 | 160 | ``` 161 | cd /var/www/ 162 | laravel new project 163 | ``` 164 | -------------------------------------------------------------------------------- /interviews/WebDeveloperInterviewQuestions.md: -------------------------------------------------------------------------------- 1 | # Web Developer Interview Questions 2 | 3 | ## JavaScript 4 | 5 | 1. How to create an object 6 | 7 | - var object = {} 8 | - var object = new Object() 9 | - var object = Object.create(null) 10 | or 11 | 12 | ``` 13 | class Person { 14 | constructor(name) { 15 | this.name = name; 16 | } 17 | } 18 | var object = new Person(''); 19 | ``` 20 | 21 | 2. What is hoisting in javascript? 22 | 23 | - The default behavior of moving all the declarations at the top of the scope before code execution 24 | 25 | ## PHP 26 | 27 | 1. Difference between include and require 28 | 29 | - Both include a file, but require results in fatal error if file can’t be included` 30 | 31 | 2. Get the IP address of client 32 | 33 | - $\_SERVER['REMOTE_ADDR'] 34 | 35 | 3. Difference between unset and unlink 36 | 37 | - Unset sets a variable to undefined; unlink deletes a file 38 | 39 | 4. Error types 40 | 41 | - Notice – non-critical errors that occurred during execution (ex. Access an undefined variable) 42 | - Warning – more important errors but script execution continues (ex. Include a non-existent file) 43 | - Fatal – causes termination of script execution (ex. Require a non-existent file) 44 | 45 | 5. Difference between GET and POST 46 | 47 | - GET variables are in URL; POST are encoded in the request body 48 | - GET has 2048 max chars and POST has no limit 49 | - GET is to retrieve data and POST is to insert/update 50 | 51 | 6. How to handle error reporting 52 | 53 | - Display_errors is on in php.ini 54 | - Ini_set(‘display_errors’, 1) 55 | - Error_reporting(E_ALL) 56 | 57 | 7. What are traits 58 | 59 | - Allow you to create reusable code where inheritance is not supported. Trait cannot be instantiated on its own. Similar to a class but intended to group functionality. 60 | 61 | 8. Can a constant change during script execution? 62 | 63 | - No; constants cannot be changed once declared 64 | 65 | 9. Can you extend a final class? 66 | 67 | - No 68 | 69 | 10. What are construct and destruct 70 | 71 | - Construct is a built in method that’s called when an object is instantiated and is used to initialize properties; destruct is called when object is destroyed and takes no params 72 | 73 | 11. How to get number of elements in array 74 | 75 | - count() 76 | 77 | 12. Get the sum of string of integers: $input = ‘1, 2, 3, 4, 5, 6, 7’; 78 | 79 | - echo array_sum(explode(‘,’ $input); 80 | 81 | 13. Three scope levels in php 82 | 83 | - Private – visible in own class 84 | - Public – visible to any code accessing class 85 | - Protected – visible only to classes parents and classes that extend the current class 86 | 87 | 14. What are getters and setters 88 | 89 | - Methods used to declare or obtain the values of variables (usually private ones). A central location to handle data before declaring or returning it 90 | 91 | 15. What is MVC 92 | 93 | - Model – handle specific tasks related to a specific area of app or functionality; database interact 94 | - View – passed data from controller and displayed to user 95 | - Controller – handles data passed by view and passes data to view; sends/receives data from model 96 | 97 | 16. How to prevent “cannot modify header information – headers already sent” warning 98 | 99 | - Don’t output anything before headers are set 100 | 101 | 17. What are SQL injections and how to prevent them 102 | 103 | - Method for altering a SQL query which can compromise data in the database 104 | - Escape user input and use prepared statements 105 | - Don’t use mysql functions; use mysqli or PDO 106 | 107 | 18. Why use === instead of == 108 | 109 | - If you want to check for a specific type. It performs better since it doesn’t have to do type conversion and should especially be used for true/false 110 | 111 | 19. What are PSR’s? 112 | 113 | - PHP standards recommendations to standardize common aspects of PHP development like coding style (PSR-2) 114 | 115 | 20. Why should you follow PSR's? 116 | 117 | - Coding standards vary between developers and companies so it sets a standard for how code should look which reduces confusion and possibly errors 118 | 119 | 21. What is composer? 120 | 121 | - Tool for dependency management; add libraries your app depends on. Example: 122 | 123 | ``` 124 | composer require nesbot/carbon 125 | ``` 126 | 127 | 22. What is PEAR? 128 | 129 | - PHP extension and application repository – extension of PHP with database classes, etc. 130 | 131 | 23. How to execute PHP from command line 132 | 133 | - php script.php 134 | 135 | 24. Start/finish php script 136 | 137 | ``` 138 | and 139 | ``` 140 | 141 | 25. Display output to the browser 142 | 143 | ``` 144 | echo, print, and 145 | ``` 146 | 147 | 26. PHP5 introduced OOP 148 | 27. Final classes and methods 149 | 150 | - Final class cannot be extended, and final method can’t be overridden 151 | 152 | 28. Compare objects in PHP 153 | 154 | - == to test if two objects are instanced from the same class and have same attributes and values 155 | - === to test if two objects refer to same instance of same class 156 | 157 | 29. How to use image functions 158 | 159 | - GD library 160 | 161 | 30. Require vs require_once 162 | 163 | - Same except require_once checks if script is already included before execution 164 | 165 | 31. Display information in human readable format 166 | 167 | - print_r() 168 | 169 | 32. Set infinite execution time for script 170 | 171 | - Set_time_limit(0); 172 | - Also set in php.ini 173 | 174 | 33. Export data into excel 175 | 176 | - Write to .csv file with comma delimited values 177 | 178 | 34. What is file_get_contents for 179 | 180 | - To read the contents of a file and store it in a variable 181 | 182 | 35. Connect to database 183 | 184 | - $database = mysqli_connect("HOST", "USER_NAME", "PASSWORD"); mysqli_select_db($database,"DATABASE_NAME"); 185 | 186 | 36. What is mysql_pconnect() for 187 | 188 | - Create a persistent database connection that doesn’t close when script ends 189 | 190 | 37. Handle results in mysql 191 | 192 | - mysqli_fetch_array, mysqli_feetch_assoc, mysqli_fetch_object, mysqli_fetch_row 193 | 194 | 38. Get number of results returned in a results set 195 | 196 | - mysqli_num_rows() 197 | 198 | 39. Number of affected entries in a query 199 | 200 | - mysqli_affected_rows() 201 | 202 | 40. Check if value is numeric 203 | 204 | - is_numeric() 205 | 206 | 41. Check if value is alphanumeric 207 | 208 | - ctype_alnum() 209 | 210 | 42. Check if variable is empty 211 | 212 | - empty() 213 | 214 | 43. Escape data before storing in database 215 | 216 | - addslashes() 217 | 218 | 44. Remove escape chars from a string 219 | 220 | - stripslashes() 221 | 222 | 45. Remove html tags from data 223 | 224 | - strip_tags() 225 | 226 | 46. Define a global variable with the global keyword 227 | 47. Best method to hash passwords 228 | 229 | - password_hash() 230 | 231 | 48. Define a constant in PHP 232 | 233 | - define(‘CONSTANT’, 123); 234 | 235 | 49. Pass a variable by reference 236 | 237 | - With ampersand in front of variable; $var = &$var2; 238 | 239 | 50. How to cast types in php 240 | 241 | - (int), (bool), (float), (string), (array), (object) 242 | 243 | 51. Ternary condition in php 244 | 245 | - Condition ? expression1 : expression2 246 | 247 | 52. How to get number of params passed to function 248 | 249 | - func_num_args() 250 | 251 | 53. What does :: mean? 252 | 253 | - Static and does not require object initialization 254 | 255 | 54. In PHP objects are passed by value or reference? 256 | 257 | - By value 258 | 259 | 55. Are parent constructors called implicitly inside a class constructor? 260 | 261 | - No, must be called like `parent::constructor($value)` 262 | 263 | 56. What is a session 264 | 265 | - A logical object enabling us to preserve temporary data across multiple PHP pages 266 | 267 | 57. How to initiate a session? 268 | 269 | - session_start() 270 | 271 | 58. How to propagate a session id? 272 | 273 | - Cookies or URL params 274 | 275 | 59. When do sessions end? 276 | 277 | - When php script finishes executing or after session_write_close() is called 278 | 279 | 60. What is $GLOBALS 280 | 281 | - Associative array of all variables in the global scope 282 | 283 | 61. What is $\_SERVER 284 | 285 | - Array of information created by web server such as paths, headers, and script locations 286 | 287 | 62. What is $\_FILES 288 | 289 | - Associative array of items uploaded to current script via the HTTP POST method 290 | 291 | 63. Difference between session_unregister() and session_unset() 292 | 293 | - Unregister removes a global variable from current session 294 | - Unset removes all session variables 295 | 296 | 64. $\_FILES['userfile']['name'] – original file name on the computer 297 | 65. $\_FILES['userfile']['tmp_name'] – file name stored on the server 298 | 66. Upload_max_filesize in php is max file upload size on server 299 | 67. What is $\_ENV 300 | 301 | - Associative array of variables sent to PHP script via the environment method 302 | 303 | 68. What is $\_COOKIE 304 | 305 | - Associative array of variables sent to php script using HTTP cookies which are temporary files the server stores on the user's computer that can be accessed whenever that same browser visits that page again. 306 | 307 | 69. What is scope? 308 | 309 | - Context within which a variable is defined 310 | 311 | 70. Concatenation operators 312 | 313 | - . concatenates left and right arguments 314 | - .= appends argument on the right to argument on left 315 | 316 | 71. === is identity operator; both vars must be identical for it to return true 317 | 72. Determine if variable is set 318 | 319 | - isset() 320 | 321 | 73. Difference between strstr() and stristr() 322 | 323 | - Find first occurrence of a string; stristr is case insensitive search 324 | 325 | 74. Foreach is used to iterate over arrays 326 | 75. What is ereg_replace vs eregi_replace() 327 | 328 | - Replace a regular expression; case insensitive 329 | 330 | 76. How to protect data in a query string 331 | 332 | - urlencode() 333 | 334 | 77. How to destroy a cookie 335 | 336 | - Set expiration time of cookie to a date in the past 337 | 338 | 78. What is composer? 339 | 340 | - A dependency manager 341 | 342 | 79. What is ereg_replace vs eregi_replace() 343 | 344 | - Replace a regular expression; case insensitive 345 | 346 | 80. How to sort using spaceship operator in php7? 347 | 348 | ``` 349 | usort(['Bbbbb', 'Ccccc', 'Aaaaa'], function($a, $b) { 350 | return $a <=> $b; // -1, 0, 1 351 | }) 352 | ``` 353 | 354 | 81. What is the null coalesce operator? 355 | 356 | - ?? – instead of typing $name = isset($\_GET[‘name’]) ? $\_GET[‘name’] : ‘’ you can type $name = $\_GET[‘name’] ?? ‘’ 357 | 358 | 82. New in PHP7 359 | 360 | - 7.1 - Array destructuring, null coalescing operator ??, type hints, nullable and void types 361 | - 7.4 – null coalescing assignment operator ??=, arrow functions with fn (), spread operator 362 | 363 | 83. What is XSS and how do you prevent it? 364 | 365 | - Where an attacker gains access to a website and executes a potentially malicious script at the client’s side. This is one of the code injections attacks which can be caused by incorrectly validating user data, which usually gets inserted into the page through a web form or using a hyperlink that has been tampered with. 366 | 367 | - Prevent it with functions like `htmlspecialchars()`, `htmlentities()`, `strip_tags()`, `addslashes()` 368 | 369 | 84. Explain the output buffering. 370 | 371 | - Starts with ob_start(). Storing output in a buffer/memory and outputting it all at once to improve performance. Otherwise the output gets sent in pieces as it's processed. You can call ob_flush() or ob_end_flush() to clear out the buffer and the buffer is also cleared out when the script ends. With output buffering you can capture output and even manipulate it before it gets output to the browser. 372 | 373 | 85. What are SOLID principles? 374 | 375 | - Single Responsibility - Classes/modules should solve only one problem 376 | - Open/Closed - Should not modify existing/well-tested classes when a new feature is built to avoid introducing bugs; Should instead extend the class/interface to add new features 377 | - Liskov Substitution - If you have a Class that extends another Class, such as `Class B extends A`, you should be able to use `Class A` anywhere you would use `Class B` and vice versa. 378 | - Interface Segregation - Interfaces should not enforce unnecessary methods to promote smaller interfaces 379 | - Dependency Inversion - High level classes should not depend on low level classes and should not need to know the details of those lower level classes; See dependency injection and IOC 380 | 381 | 86. Explain namespaces 382 | 383 | - Namespaces provide a way in which to group related classes, interfaces, functions and constants and also help to prevent name conflicts between classes/functions and 3rd party classes/functions 384 | 385 | 87. What is Opcache and why is it useful? 386 | 387 | - A caching engine built into php that increases performance by storing precompiled scripts so php doesn't have to load/parse those scripts on each request. 388 | 389 | 88. What is an interface? 390 | 391 | - Defines the structure of a class and how it should be implemented. A class should have the same behavior as the interface it implements. `ClassName implements InterfaceName` 392 | 393 | 89. How do you get the request URI in PHP? 394 | 395 | - $\_SERVER['REQUEST_URI'] 396 | 397 | 90. Describe dependency injection / inversion of control. 398 | 399 | - Say you have a class, and a method of that class needs another class, and the method of that class needs another class. With IOC, you first define the lowest level dependency, and you inject it into the class that needs it like this: 400 | 401 | ``` 402 | # From https://php-di.org/doc/understanding-di.html 403 | class StoreService { 404 | private $geolocationService; 405 | 406 | public function __construct(GeolocationService $geolocationService) { 407 | $this->geolocationService = $geolocationService; 408 | } 409 | 410 | public function getStoreCoordinates($store) { 411 | return $this->geolocationService->getCoordinatesFromAddress($store->getAddress()); 412 | } 413 | } 414 | ``` 415 | 416 | and define your services using an interface like this: 417 | 418 | ``` 419 | interface GeolocationService { 420 | public function getCoordinatesFromAddress($address); 421 | } 422 | 423 | class GoogleMaps implements GeolocationService { ... 424 | 425 | class OpenStreetMap implements GeolocationService { ... 426 | 427 | class MapQuest implements Geolocation Service { ... 428 | ``` 429 | 430 | Dependency injection prevents your classes from being tightly coupled to their dependencies. Instead of hard-coding class dependencies, you inject them at runtime. For example, you can define a generic service like the `$geolocationService` above, then in your script, initialize your service and pass it to your class like this: 431 | 432 | ``` 433 | $geolocationService = new GoogleMaps(); 434 | $storeService = new StoreService($geolocationService); 435 | ``` 436 | 437 | 91. ELI5 OOP programming 438 | 439 | - I think of it kind of like a puzzle. Your program is the full puzzle when it's put together, and the code you write is like the individual pieces. Each piece of the puzzle, called an Object/Class, will be a specific "thing" in your app, like a "User", or a "File", or a "Task". Each object has a set of instructions called "methods/functions" that define what that "thing" can do or have done to it. The advantage is that code is broken up into smaller manageable pieces and more people can work on different parts instead of one big application. 440 | 441 | 92. How to encrypt a password: 442 | 443 | ``` 444 | $encrypted = password_hash($password, PASSWORD_DEFAULT); 445 | ``` 446 | 447 | 93. How to validate an email address with filters? 448 | 449 | ``` 450 | filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); 451 | ``` 452 | 453 | 94. What is a variadic function? 454 | 455 | ``` 456 | // Accept a variable number of arguments which get converted into an array in the function using the splat operator (...) 457 | function process(...$vals) {} 458 | ``` 459 | 460 | 95. Describe encapsulation 461 | 462 | - Wrapping variables and methods into a class. Encapsulation is used to protect variables and methods by restricting access to them using accessors (protected, private) and having getter/setter methods to access data in the class. 463 | 464 | ``` 465 | class Person 466 | { 467 | private $name; 468 | 469 | public function getName() 470 | { 471 | return $this->name; 472 | } 473 | 474 | public function setName($name) 475 | { 476 | $this->name = $name; 477 | } 478 | } 479 | ``` 480 | 481 | 96. What is the singleton pattern? 482 | 483 | - When only one instance of a class is needed. Instead of creating a new instance you reference the existing instance of the class. 484 | 485 | 97. How does the internet work? 486 | 487 | - Websites have a domain name like `www.google.com`. You enter this domain name in the browser. 488 | - The browser uses DNS to look up the IP address of that domain and sends a request to that domain's server. 489 | - Your browser connects to that domain's web server on port 80 (HTTP) or 443 (HTTPS) and the web server responds with a web page which gets downloaded by the browser. 490 | 491 | ### Laravel 492 | 493 | 1. What is Laravel? 494 | 495 | - An open source PHP framework written by Taylor Otwell in PHP7 (currently). Uses MVC architecture. 496 | 497 | 2. What is an Event in Laravel? 498 | 499 | - An observer implementation that lets you subscribe and listen to certain actions that occur in the app. 500 | 501 | 3. What is artisan? 502 | 503 | - CLI interface tool that is included with laravel that lets you run commands that help with building your app like saffolding models and controllers. Ex. `php artisan make:model ModelName` 504 | 505 | 4. What are some Laravel packages? 506 | 507 | - Breeze - authentication scaffolding with Tailwind 508 | - Cashier - implement payments with Stripe 509 | - Jetstream - a starter kit that implements login, registration, email verification, 2fa and uses Tailwind with Livewire or Inertia scaffolding 510 | - Passport - OAuth2 server implementation 511 | - Sail - a docker container for laravel 512 | - Horizon - dashboard for Redis queues 513 | - Socialite - OAuth with 3rd parties like Facebook, Twitter, LinkedIn, Google, Github, BitBucket 514 | - Telescope - look at requessts, exceptions, logs, database queries, queues, mail, etc. for development purposes 515 | - Valet - dev environment for MacOs that's quick and easy to setup 516 | 517 | 5. What are named routes? 518 | 519 | - You can specify a route and give it a name that's different than the actual path. Then in your code when you want to refernce the route, you can just specify it by name instead of the path. 520 | 521 | 6. What are database migrations? 522 | 523 | - Like version control for databases. You build your database structure in PHP scripts using something like `php artisan make:migration create_users_table`, then open the script and modify it. When you have your structure, you run `php artisan migrate` and it will create your database structure for you. 524 | 525 | 7. What are service providers? 526 | 527 | - A central location where the core laravel application features and your app are bootstrapped. They use the ServiceProvider class 528 | 529 | 8. What is the Laravel service container? 530 | 531 | - Used to resolve class dependencies and perform dependency injection. Class dependencies are injected into classes via the class constructors or setters rather than being instantiated in the classes themselves. 532 | 533 | 9. What are Laravel Contracts? 534 | 535 | - Interfaces that define the core services in the framework 536 | 537 | 10. What are facades? 538 | 539 | - Basically like static methods for core laravel features to give easy access to those methods in an expressive syntax like `Route::get()` or `DB::table('table_name')->get()` 540 | 541 | 11. What is eloquent? 542 | 543 | - Laravel's ORM and query builder which is an ActiveRecord implementation for working with databases. 544 | 545 | 12. What are traits? 546 | 547 | - Lets you define a method that caan be shared across different classes. 548 | 549 | ``` 550 | trait Sharable { 551 | public function share($item) 552 | { 553 | return 'share this item'; 554 | } 555 | } 556 | 557 | class Post { 558 | use Sharable; 559 | } 560 | 561 | class Comment { 562 | use Sharable; 563 | } 564 | ``` 565 | 566 | 13. What about caching? 567 | 568 | - Laravel uses Memcached and Redis for caching 569 | 570 | 14. What is Lumen? 571 | 572 | - A PHP micro-framework based on Laravel's main components used to build APIs and microservices 573 | 574 | 15. What is dd()? 575 | 576 | - dump and die for debugging 577 | 578 | 16. What are laravel guards? 579 | 580 | - Define how users are authenticated for each request; The session guard maintains state using session and storage cookies. 581 | 582 | 17. How to put in maintenance mode? 583 | 584 | ``` 585 | php artisan down 586 | php artisan up 587 | ``` 588 | 589 | 18. What are factories and seeders? 590 | 591 | - Factories are a way to put values in fields of a particular model automatically. Used with seeders to populate fake data in a database. 592 | - Seeders are used to seed the database with mock data using something like Faker to simulate data. 593 | 594 | 19. How do you implement soft deletes? 595 | 596 | - `use SoftDeletes;` in your Model 597 | 598 | 20. How do you do form/request validation? 599 | 600 | ``` 601 | public function store(Request $request) 602 | { 603 | $validated = $request->validate([ 604 | 'title' => 'required|unique:posts|max:255', 605 | 'body' => 'required', 606 | ]); 607 | } 608 | ``` 609 | 610 | 21. What are collections? 611 | 612 | - A wrapper for an array of data; Eloquent returns collections from database queries. There are methods that make it easier to work with collections by iterating over them or performing operations on them. 613 | 614 | 22. What are queues? 615 | 616 | - When a task would otherwise take a long time to process, you can run it in the background with queues. 617 | 618 | ## HTML 619 | 620 | ## CSS 621 | 622 | 1. What does `article + article` do? 623 | 624 | - Will apply styles to all article tags except the first one. 625 | 626 | ## MySQL 627 | 628 | 1. What is MySQL? 629 | 630 | - A multi-threated, multi-user open-source relational database currently owned by Oracle. 631 | 632 | 2. What is the difference between a table and a database? 633 | 634 | - A table is a collection of rows and columns; a database is a collection of tables. 635 | 636 | 3. What types of tables are present in MySQL? 637 | 638 | - MyISAM, Heap, Merge, INNODB, ISAM 639 | - MyISAM has table level locking while a query is running; Also has Fulltext searches and is smaller than innodb 640 | - INNODB has row level locking so it only locks the row being modified. INNODB also has transactions, primary/foreign key constraints, and better crash recovery than MyISAM 641 | 642 | 4. Check MySQL version 643 | 644 | - linux prompt: mysql -v 645 | - mysql prompt: SHOW VARIABLES LIKE "%version%"; 646 | 647 | 5. How to add columns 648 | 649 | - ALTER TABLE table_name ADD COLUMN column_name VARCHAR(30) NOT NULL; 650 | 651 | 6. How to delete a table? 652 | 653 | - DROP TABLE tablename; 654 | 655 | 7. How to add a foreign key? 656 | 657 | - [CONSTRAINT constraint_name] FOREIGN KEY [foreign_key_name] (col_name, ...) REFERENCES parent_tbl_name (col_name,...) 658 | 659 | 8. How to change mysql password? 660 | 661 | - ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword'; 662 | 663 | 9. How to rename a table? 664 | 665 | - RENAME old_table TO new_table; 666 | 667 | 10. How to change database name? 668 | 669 | - Create a new database, mysqldump your existing database, and import into the new database 670 | - mysqldump -u username -p "password" -R oldDbName > oldDbName.sql 671 | - mysql -u username -p"password" newDbName < oldDbName.sql 672 | 673 | 11. How to change column name? 674 | 675 | - ALTER TABLE table_name CHANGE COLUMN old_column new_column [column definition] 676 | 677 | 12. How to delete columns? 678 | 679 | - ALTER TABLE table_name DROP COLUMN column1, column2, etc. 680 | 681 | 13. How to insert into a table? 682 | 683 | - INSERT INTO table_name (field1, field2, field3) VALUES (value1, value2, valu3) 684 | 685 | 14. How to delete from table? 686 | 687 | - DELETE FROM table_name WHERE condition 688 | 689 | 15. How to join tables 690 | 691 | - INNER - returns only those results from the tables that match the specified condition and hides other rows and columns. MySQL assumes this as the default Join. 692 | - LEFT - return all the records from the first (left-side) table, even no matching records found from the second (right side) table. If it will not find any matches record from the right side table, then returns null. 693 | - RIGHT - returns all rows from the right-hand table, and only those results from the other table that fulfilled the join condition. If it finds unmatched records from the left side table, it returns Null value; Also known as an OUTER join. 694 | - CROSS - used to combine all possibilities of the two or more tables and returns the result that contains every row from all contributing tables 695 | 696 | 16. Join two tables 697 | 698 | - SELECT name, scores, address, email FROM Student s INNER JOIN Marks m on s.stud_id = m.stud_id 699 | - SELECT name, scores, address, email FROM Student s, Marks m WHERE s.stud_id = m.stud_id 700 | 701 | 17. How to update table 702 | 703 | - UPDATE table_name SET field1=new-value1, field2=new-value2, ... [WHERE Clause] 704 | 705 | 18. How to drop primary key 706 | 707 | - ALTER TABLE table_name DROP PRIMARY KEY; 708 | 709 | 19. What is a stored procedure and how to create one? 710 | 711 | - A group of SQL statements that we save in the database. The SQL queries, including INSERT, UPDATE, DELETE, etc. can be a part of the stored procedure 712 | 713 | ``` 714 | DELIMITER && 715 | CREATE PROCEDURE procedure_name [[IN | OUT | INOUT] parameter_name datatype [, parameter datatype]) ] 716 | BEGIN 717 | Declaration_section 718 | Executable_section 719 | END && 720 | DELIMITER ; 721 | ``` 722 | 723 | ``` 724 | CALL stored_procedure_name (argument_list); 725 | ``` 726 | 727 | 21. What is a view and how to create one? 728 | 729 | - a database object whose values are based on the base table. It is a virtual table created by a query by joining one or more tables. It is operated similarly to the base table but does not contain any data of its own. If any changes occur in the underlying table, the same changes reflected in the View also. 730 | 731 | ``` 732 | CREATE [OR REPLACE] VIEW view_name AS 733 | SELECT columns 734 | FROM tables 735 | [WHERE conditions]; 736 | ``` 737 | 738 | 22. What is a trigger and how to create one? 739 | 740 | - a procedural code in a database that automatically invokes whenever certain events on a particular table or view in the database occur. It can be executed when records are inserted into a table, or any columns are being updated 741 | 742 | ``` 743 | CREATE TRIGGER trigger_name 744 | [before | after] 745 | {insert | update | delete} 746 | ON table_name [FOR EACH ROW] 747 | BEGIN 748 | --variable declarations 749 | --trigger code 750 | END; 751 | ``` 752 | 753 | 23. Create a mysql user 754 | 755 | ``` 756 | CREATE USER [IF NOT EXISTS] account_name IDENTIFIED BY 'password'; 757 | ``` 758 | 759 | 24. Load data from csv into a table 760 | 761 | ``` 762 | LOAD DATA INFILE '/path/to/file/filename.csv' 763 | INTO TABLE tablename 764 | FIELDS TERMINATED BY ',' 765 | OPTIONALLY ENCLOSED BY '"' 766 | LINES TERMINATED BY '\r\n' 767 | IGNORE 1 ROWS; 768 | ``` 769 | 770 | 25. The difference between CHAR and VARCHAR 771 | 772 | ``` 773 | CHAR and VARCHAR have differed in storage and retrieval. 774 | CHAR column length is fixed, while VARCHAR length is variable. 775 | The maximum no. of character CHAR data types can hold is 255 characters, while VARCHAR can hold up to 4000 characters. 776 | CHAR is 50% faster than VARCHAR. 777 | CHAR uses static memory allocation, while VARCHAR uses dynamic memory allocation. 778 | ``` 779 | 780 | 26. What is default mysql port number 781 | 782 | - 3306 783 | 784 | 27. How to use limit to display first 20 rows 785 | 786 | - SELECT \* FROM table_name LIMIT 0,20; 787 | 788 | 28. Write a query to select all teams that won either 1, 3, 5, or 7 games. 789 | 790 | - SELECT team_name FROM team WHERE team_won IN (1, 3, 5, 7); 791 | 792 | 29. What are the advantages of MyISAM over InnoDB? 793 | 794 | - MyISAM follows a conservative approach to disk space management and stores each MyISAM table in a separate file, which can be further compressed if required. On the other hand, InnoDB stores the tables in the tablespace. Its further optimization is difficult. 795 | 796 | 30. How to display the nth largest salary from a table 797 | 798 | - select distinct(salary)from employee order by salary desc limit n-1,1 799 | 800 | 31. How to count the number of rows 801 | 802 | - SELECT COUNT user_id FROM users; 803 | 804 | 32. What are DDL, DML, and DCL 805 | 806 | - DDL - Data Definition Language (DDL) deals with all the database schemas, and it defines how the data should reside in the database. Commands like CREATE TABLE and ALTER TABLE 807 | - DML - Data Manipulative Language (DML) deals with operations and manipulations on the data. The commands in DML are Insert, Select, etc. 808 | - DCL - Data Control Languages (DCL) are related to the Grant and permissions. In short, the authorization to access any part of the database is defined by these. 809 | 810 | 33. Select entries for a single month from a table 811 | 812 | - select \* from tasks where month(date_time_column) = 2; 813 | 814 | 34. How to use the WHERE, IN clause 815 | 816 | ``` 817 | SELECT * FROM table_name WHERE column IN (value1, value2, value3, ...) 818 | ``` 819 | 820 | 35. How to use the BETWEEN clause 821 | 822 | ``` 823 | SELECT * FROM contacts WHERE contact_id BETWEEN 100 AND 200; 824 | ``` 825 | 826 | 36. How to export an entire database? 827 | 828 | - mysqldump 829 | 830 | 37. Describe the GROUP BY clause. 831 | 832 | - The GROUP BY clause returns one row for each group. In other words, it reduces the number of rows in the result set. Can be combined with another method like COUNT to get a count of each of a specific value. Example: 833 | 834 | ``` 835 | SELECT 836 | status, COUNT(*) as count 837 | FROM 838 | orders 839 | GROUP BY status; 840 | ``` 841 | 842 | - This yields a result that looks like this: 843 | 844 | ``` 845 | status | count 846 | ------------------ 847 | Active 15 848 | On Hold 3 849 | Cancelled 6 850 | ``` 851 | 852 | - Or you can join tables and use SUM to get the sum of all items of a group like this: 853 | 854 | ``` 855 | SELECT 856 | status, 857 | SUM(quantity * price) AS amount 858 | FROM 859 | orders 860 | INNER JOIN orderdetails 861 | USING (orderNumber) 862 | GROUP BY 863 | status; 864 | ``` 865 | 866 | ## Linux 867 | 868 | 1. Difference between Unix and Linux 869 | 870 | - Unix is proprietary (bell labs); Linux is open source by Linus Torvalds 871 | 872 | 2. What is bash 873 | 874 | - Default shell for most linux operating systems 875 | 876 | 3. What is the kernel? 877 | 878 | - Core part of the OS that manages interactions with hardware 879 | 880 | 4. Difference between bash and dos 881 | 882 | - Bash is case sensitive, uses forward slashes; dos is not case sensitive and uses backslashes 883 | 884 | 5. What is swap? 885 | 886 | - Partition; Temporary space the OS uses when there isn’t enough RAM to perform an action 887 | 888 | 6. How to check memory usage 889 | 890 | - Top 891 | - Free -m 892 | 893 | 7. What are Symbolic links? 894 | 8. How to change permissions 895 | 896 | - Chmod 777 filename.ext 897 | - Chmod -R 777 foldername 898 | - Chown is the same and changes group/owner 899 | 900 | 9. What does pwd do? 901 | 902 | - Prints the current working directory 903 | 904 | 10. What is a daemon? 905 | 906 | - A service that’s running waiting for a request so it can perform an action 907 | 908 | 11. What are the types of permissions 909 | 910 | - Read, write, execute 911 | 912 | 12. What is the grep command? 913 | 914 | - Pattern based searching 915 | 916 | 13. How do you terminate a process? 917 | 918 | - Kill -9 process_id 919 | 920 | 14. How to find all js files with the word ‘project’ in it 921 | 922 | - Find / -name ‘\*.js’ | xargs grep “project” 923 | 924 | 15. Find the status of a process 925 | 926 | - Ps ux 927 | - Ps -ef|grep httpd or ps -ef|grep apache2 or ps -ef|grep php 928 | 929 | 16. How to tar/untar files 930 | 931 | - Tar -zcvf tarfilename.tar.gz file1 file2 file3 # compress and zip files 932 | - Tar -zxvf tarfilename.tar.gz # unzip tar file 933 | 934 | 17. How to delete files 935 | 936 | - Rm filename 937 | - Rm -rf directory 938 | 939 | 18. What is sudo? 940 | 941 | - Temporary root access 942 | 943 | 19. How to restart apache? 944 | 945 | - Sudo service apache2 restart 946 | 947 | ## Data Structures and Algorithms 948 | 949 | 1. What is Big O Notation? 950 | 951 | - Big O notation is used to describe the performance or complexity of an algorithm. Can be used to describe the execution time or space/memory used. Only cares about the worst case. 952 | 953 | - O(1) – constant time; describes an algorithm that will always execute in the same amount of time or space regardless of the input 954 | 955 | - O(n) –linear time; scales linearly with the size of the input 956 | 957 | - O(n^2) – quadratic time; describes an algorithm whose performance is proportional to the square of the size of the input 958 | 959 | - O(2^n) – exponential time; doubles with each addition to input 960 | 961 | - O(n!) – factorial time; adding a loop for every element 962 | 963 | 2. Big O Notation Rules: 964 | 965 | - Different steps get added together; always the worst case 966 | - Remove constants (2n = n) 967 | - Different inputs have different variables 968 | - Drop non-dominant terms 969 | 970 | 3. Space complexity – memory; total size available relative to size of input 971 | 972 | - Heap – where we store variables 973 | - Stack – where we keep track of function calls 974 | 975 | 4. What causes space complexity? 976 | 977 | - Variables 978 | - Data Structures 979 | - Function calls 980 | - Allocations 981 | 982 | 5. Arrays 983 | 984 | - Static arrays - fixed in size; you must specify the length beforehand 985 | - Dynamic arrays - expands automatically as you add more elements; copy and rebuild an array in a new memory location with more memory if needed 986 | -------------------------------------------------------------------------------- /resources/Apis.md: -------------------------------------------------------------------------------- 1 | # Public API's 2 | 3 | - [List of public API's](https://github.com/public-apis/public-apis) 4 | - [Jikan](https://jikan.docs.apiary.io/#) 5 | - [Spotify](https://developer.spotify.com/documentation/web-api/) 6 | - [Yelp](https://www.yelp.com/developers) 7 | - [TheTVDB](https://thetvdb.com/) 8 | - [Zip Code API](https://www.zipcodeapi.com/) 9 | - [15 Fun APIs for Your Next Project](https://dev.to/biplov/15-fun-apis-for-your-next-project-5053) 10 | - [10 Fun APIs to Use For Your Next Project](https://dev.to/hb/10-fun-apis-to-use-for-your-next-project-2lco) 11 | - [apilist.fun](https://apilist.fun/) 12 | -------------------------------------------------------------------------------- /resources/Assets.md: -------------------------------------------------------------------------------- 1 | # Assets 2 | 3 | ## Images / Videos 4 | 5 | - [Undraw](https://undraw.co) 6 | - [Unsplash (free stock photos)](https://unsplash.com/) 7 | - [Hero Patterns](http://www.heropatterns.com/) 8 | - [Coverr (free stock videos)](https://coverr.co/) 9 | - [Looka (brand designer)](https://looka.com/) 10 | - [Autodraw](https://www.autodraw.com/) 11 | - [AllTheFreeStock](https://allthefreestock.com/) 12 | - [Mixkit](https://mixkit.co/) 13 | - [Pexels](https://www.pexels.com/) 14 | - [Photo Creator](https://photos.icons8.com/creator) 15 | - [RemoveBG](https://www.remove.bg/) 16 | - [AI Generated Photos](https://generated.photos/faces) 17 | - [DuoTone](https://duotone.shapefactory.co/) 18 | - [OpenPeeps](https://www.openpeeps.com/) 19 | - [Humaaans](https://www.humaaans.com/) 20 | - [Ouch!](https://icons8.com/ouch) 21 | - [Avataaars](https://getavataaars.com/) 22 | - [lookup.design](https://lookup.design/) 23 | - [404 Illustrations](https://error404.fun/) 24 | 25 | #### Icons 26 | 27 | - [IcoMoon](https://icomoon.io/) 28 | - [IconFinder](https://www.iconfinder.com/) 29 | - [AllTheFreeStock](https://allthefreestock.com/) 30 | - [Linea Icons](https://themeui.net/linea-free-outline-iconset/) 31 | - [CSS Icons](https://css.gg/) 32 | - [Tilda](https://tilda.cc/free-icons/) 33 | - [Ikonate](https://ikonate.com/) 34 | - [Eva Icons](https://akveo.github.io/eva-icons/#/) 35 | - [Icons8 Animated Icons](https://icons8.com/animated-icons) 36 | - [Fontawesome](https://fontawesome.com/?from=io) 37 | - [Fontawesome (cheatsheet)](https://fontawesome.com/cheatsheet?from=io) 38 | - [Material Icons](https://material.io/resources/icons/?icon=person&style=baseline) 39 | - [MDI Icons](https://materialdesignicons.com/) 40 | - [Fontello](http://fontello.com/) 41 | - [Heroicons](https://heroicons.com/) 42 | - [Zondicons](https://www.zondicons.com/icons.html) 43 | 44 | ## Fonts 45 | 46 | - [Fontsquirrel](https://www.fontsquirrel.com/) 47 | - [Google Fonts](https://fonts.google.com/) 48 | - [Fonts Arena](https://fontsarena.com/) 49 | - [BeFonts](https://befonts.com/) 50 | - [Fontjoy](https://fontjoy.com/) 51 | -------------------------------------------------------------------------------- /resources/Cloud.md: -------------------------------------------------------------------------------- 1 | # Cloud Hosting Options 2 | 3 | - [Digital Ocean](https://www.digitalocean.com/) 4 | - [Linode](https://www.linode.com/) 5 | - [Netlify](https://www.netlify.com/) 6 | - [Heroku](https://www.heroku.com/) 7 | - [Render](https://render.com/) 8 | - [AWS](https://aws.amazon.com/) 9 | -------------------------------------------------------------------------------- /resources/DigitalOcean.md: -------------------------------------------------------------------------------- 1 | # Digital Ocean Setup Guides 2 | 3 | - [Link a Domain](https://www.digitalocean.com/community/tutorials/how-to-point-to-digitalocean-nameservers-from-common-domain-registrars) 4 | - [Initial Server Setup](https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04) 5 | - [Setup LAMP stack](https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-ubuntu-18-04) 6 | - [Reset MySQL password](https://www.digitalocean.com/community/tutorials/how-to-reset-your-mysql-or-mariadb-root-password-on-ubuntu-18-04) 7 | - [Setup Mod Rewrite in Apache for cleaner URLs](https://www.digitalocean.com/community/tutorials/how-to-rewrite-urls-with-mod_rewrite-for-apache-on-ubuntu-16-04) 8 | - [Install Git](https://www.digitalocean.com/community/tutorials/how-to-install-git-on-ubuntu-18-04) 9 | - [Install Composer](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-composer-on-ubuntu-18-04) 10 | - [Install Node.js](https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-18-04) 11 | - [Deploy Laravel to DigitalOcean](https://medium.com/@franciscojbarrera/how-to-deploy-laravel-on-digital-ocean-lamp-e69046906fe) 12 | 13 | # Digital Ocean Setup [Advanced] 14 | 15 | - [Setup Virtual Hosts](https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04) 16 | - [Setup SSL Certificates with LetsEncrypt](https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-18-04) 17 | - [LetsEncrypt wildcard certificates with cerbot](https://www.digitalocean.com/community/tutorials/how-to-create-let-s-encrypt-wildcard-certificates-with-certbot) 18 | 19 | ## Setting up SSL Cert with a wildcard with Certbot 20 | 21 | > Replace `your-tld.com` below with your Top Level Domain name. 22 | 23 | ``` 24 | sudo certbot certonly --manual --preferred-challenges=dns --server=https://acme-v02.api.letsencrypt.org/directory --agree-tos -d your-tld.com,*.your-tld.com 25 | ``` 26 | 27 | or, if you have the [dns-digitalocean certbot plugin](https://certbot-dns-digitalocean.readthedocs.io/en/stable/) installed: 28 | 29 | ``` 30 | sudo certbot certonly \ 31 | --dns-digitalocean \ 32 | --dns-digitalocean-credentials ~/certbot-creds.ini \ 33 | -d your-tld.com \ 34 | -d '*.your-tld.com' 35 | ``` 36 | -------------------------------------------------------------------------------- /resources/HtmlAndCss.md: -------------------------------------------------------------------------------- 1 | # HTML and CSS Resources 2 | 3 | ## CSS Frameworks 4 | 5 | - [Bootstrap](https://getbootstrap.com/docs/4.4/getting-started/introduction/) 6 | - [Bulma](https://bulma.io/documentation/overview/start/) 7 | - [Materialize](https://materializecss.com/getting-started.html) 8 | - [Pure](https://purecss.io/start/) 9 | - [Semantic](https://semantic-ui.com/introduction/getting-started.html) 10 | - [Tailwind](https://tailwindcss.com/) 11 | - [Flowbite - Tailwind components](https://flowbite.com) 12 | - [DaisyUI - Tailwind components](https://daisyui.com/) 13 | - [Material Design Lite](https://getmdl.io/) 14 | - [Foundation](https://get.foundation/) 15 | - [Headless UI - for React and Vue](https://headlessui.com/) 16 | 17 | ## Cheatsheets 18 | 19 | - [BEM Cheatsheet](https://9elements.com/bem-cheat-sheet/) 20 | - [HTML5 Canvas Cheatsheet](https://simon.html5.org/dump/html5-canvas-cheat-sheet.html) 21 | - [CSS3 Media Queries Cheatsheet](https://mac-blog.org.ua/css-3-media-queries-cheat-sheet) 22 | - [Bootstrap 5 Cheatsheet](https://bootstrap-cheatsheet.themeselection.com/) 23 | - [SEO Cheatsheet](https://moz.com/learn/seo/seo-cheat-sheet) 24 | 25 | ## CSS Precompilers 26 | 27 | - [Sass](https://sass-lang.com/guide) 28 | - [PostCSS](https://postcss.org/) 29 | 30 | ## CSS Libraries 31 | 32 | - [Animate](https://daneden.github.io/animate.css/) 33 | 34 | ## CSS Generators 35 | 36 | - [CSS Gradient Generator](https://cssgradient.io/) 37 | - [Gradient Magic](https://www.gradientmagic.com/) 38 | - [Accordion Slider](https://accordionslider.com/) 39 | - [Best CSS Button Generator](https://www.bestcssbuttongenerator.com/) 40 | - [CSS Button Creator](https://cssbuttoncreator.com/) 41 | - [Web Code Tools](https://webcode.tools/) 42 | - [Clippy](http://bennettfeely.com/clippy/) 43 | - [Cubic Bezier](http://cubic-bezier.com/) 44 | - [Separator Generator](https://wweb.dev/resources/css-separator-generator) 45 | - [CSS Grid GEnerator](https://cssgrid-generator.netlify.com/) 46 | - [Shadow Generator](https://brumm.af/shadows) 47 | - [CSS Effects](https://emilkowalski.github.io/css-effects-snippets/) 48 | - [Animista](https://animista.net/) 49 | - [WhatAMesh](https://whatamesh.vercel.app/) 50 | - [Glassmorphism](https://markodenic.com/tools/glassmorphism-css-generator/) 51 | - [Shape Divider](https://www.shapedivider.app/) 52 | - [9elements - Fancy Border Radius Generator](https://9elements.github.io/fancy-border-radius/) 53 | - [Smooth Shadow](https://shadows.brumm.af/) 54 | - [Haikei background generator](https://app.haikei.app/) 55 | - [Tailwind CSS Blocks](https://blocks.wickedtemplates.com/) 56 | - [Hypercolor - Gradients for Tailwind](https://hypercolor.dev/) 57 | 58 | #### Pattern / SVG Generators 59 | 60 | - [Blobmaker](https://www.blobmaker.app/) 61 | - [GetWaves](https://getwaves.io/) 62 | - [Patterns](https://bansal.io/pattern-css#triangles) 63 | - [Paaatterns](https://products.ls.graphics/paaatterns/) 64 | - [Scribbbles](https://www.scribbbles.design/) 65 | - [SVGator](https://www.svgator.com/) 66 | - [Hola SVG Loader Generator](https://loaders.holasvg.com/) 67 | - [PatternPad](https://patternpad.com/) 68 | - [SVG Backgrounds and SVG toCSS](https://www.svgbackgrounds.com/tools/svg-to-css/) 69 | 70 | #### Color Generators 71 | 72 | - [Coolors](https://coolors.co/app) 73 | - [Paletton](https://paletton.com/) 74 | - [Flat UI Colors](https://flatuicolors.com/) 75 | - [LOL Colors](https://www.webdesignrankings.com/resources/lolcolors/) 76 | - [Color Hunt](https://colorhunt.co/) 77 | - [Palette Ninja](https://palette.ninja/) 78 | - [colors.lol](https://colors.lol/) 79 | - [Happy Hues](https://www.happyhues.co/) 80 | - [ColorMixer](https://colormixer.web.app/02007115ff623007ff9bc91b64440301ffff7c5f55610300/Sunset) 81 | - [ColorSpace](https://mycolor.space/) 82 | 83 | ## Design Concepts 84 | 85 | - [Atomic Design (by Brad Frost)](https://atomicdesign.bradfrost.com/) 86 | - [BEM (Block Element Modifier)](http://getbem.com/introduction/) 87 | - [Laws of UX](https://lawsofux.com) 88 | 89 | ## Learning 90 | 91 | - [Flexbox Froggy](https://flexboxfroggy.com/) 92 | - [Grid Garden](https://cssgridgarden.com/) 93 | - [CSS Tricks](https://css-tricks.com/) 94 | - [UI Design](https://learnui.design) 95 | - [Shift Nudge](https://shiftnudge.com) 96 | 97 | ## Design Inspirations 98 | 99 | - [Web Design Inspirations](https://www.webdesign-inspiration.com/) 100 | - [CodeMyUI](https://codemyui.com/) 101 | - [Landingfolio](https://www.landingfolio.com/) 102 | - [WebDevResources](https://webdevresources.info/) 103 | - [Undesign](https://undesign.learn.uno) 104 | - [Muzli](https://muz.li) 105 | -------------------------------------------------------------------------------- /resources/Javascript.md: -------------------------------------------------------------------------------- 1 | # JavaScript Resources 2 | 3 | ## Front-End Libraries/Frameworks 4 | 5 | - [Angular](https://angular.io/) 6 | - [Aurelia](https://aurelia.io/) 7 | - [Ember](https://emberjs.com/) 8 | - [React](https://reactjs.org/) 9 | - [Svelte](https://svelte.dev/) 10 | - [Vue](https://vuejs.org/) 11 | - [jQuery](https://jquery.com/) 12 | - [jQuery UI](https://jqueryui.com/) 13 | - [jQuery Mobile](https://jquerymobile.com/) 14 | 15 | ## Back-End 16 | 17 | - [Node.js](https://nodejs.org/en/) 18 | - [NPM](https://www.npmjs.com/) 19 | - [NPM Tips](https://corgibytes.com/blog/2017/04/18/npm-tips/) 20 | - [Express](https://expressjs.com/) 21 | - [Meteor](https://www.meteor.com/) 22 | 23 | ## Static Site Generators 24 | 25 | - [Gatsby](https://www.gatsbyjs.com/) 26 | - [Hugo](https://gohugo.io/) 27 | 28 | ## Libraries 29 | 30 | - [Chart.js](https://www.chartjs.org/) 31 | - [Moment.js](https://momentjs.com/docs/#/displaying/) 32 | - [Sweet Alert](https://sweetalert.js.org/docs/) 33 | - [Tippy.js](https://atomiks.github.io/tippyjs/) 34 | - [Popper.js](https://popper.js.org/) 35 | - [Lodash](https://lodash.com/) 36 | 37 | ## Vue Component Frameworks 38 | 39 | - [Buefy (Bulma + Vue)](https://buefy.org/) 40 | - [MDBootstrap Vue](https://mdbootstrap.com/docs/vue/) 41 | - [Vuetify](https://vuetifyjs.com/en/getting-started/quick-start/) 42 | 43 | #### Vue Frameworks 44 | 45 | - [Nuxt](https://nuxtjs.org/guide) 46 | - [Vue Design System](https://vueds.com/) 47 | - [Inertia](https://inertiajs.com/) 48 | 49 | #### Vue Plugins 50 | 51 | - [Vue Toastification](https://github.com/Maronato/vue-toastification) 52 | 53 | ## React Frameworks & UI Libraries 54 | 55 | - [Next.js](https://nextjs.org/) 56 | - [Remix.js](https://remix.run/) 57 | - [Reactstrap](https://reactstrap.github.io/) 58 | - [MUI (formerly Material UI)](https://mui.com/material-ui/all-components/) 59 | - [Chakra UI](https://v2.chakra-ui.com/getting-starteda) 60 | 61 | ## Design Systems and CMS's 62 | 63 | - [Storybook](https://storybook.js.org/docs/basics/introduction/) 64 | - [Storyblok](https://www.storyblok.com/) 65 | - [Strapi](https://strapi.io/documentation/developer-docs/latest/getting-started/introduction.html) 66 | - [Vuepress](https://vuepress.vuejs.org/guide/) 67 | - [Sanity](https://www.sanity.io/) 68 | 69 | ## GraphQL 70 | 71 | - [GraphQL](https://graphql.org/learn/) 72 | - [GraphiQL](https://github.com/graphql/graphiql) 73 | - [GraphQL Playground](https://github.com/prismagraphql/graphql-playground) 74 | - [Vue Apollo](https://apollo.vuejs.org/guide/) 75 | 76 | ## Backend 77 | 78 | - [Supabase](https://supabase.com/docs) 79 | - [Firebase](https://firebase.google.com/docs/auth/web/start) 80 | - [MongoDB](https://www.mongodb.com/) 81 | 82 | ## Web Game Development 83 | 84 | - [Phaser](https://phaser.io/tutorials/getting-started-phaser3/index) 85 | 86 | ## Learning 87 | 88 | - [Wes Bos Courses](https://wesbos.com/courses/) 89 | - [Vue Mastery](https://www.vuemastery.com/) 90 | - [Vue Developers](https://vuejsdevelopers.com) 91 | -------------------------------------------------------------------------------- /resources/Learning.md: -------------------------------------------------------------------------------- 1 | # Learning 2 | 3 | ## General Web Development Learning 4 | 5 | - [freecodecamp](https://www.freecodecamp.org/) 6 | - [Udemy](https://udemy.com/) 7 | - [Pluralsight (paid)](https://pluralsight.com/) 8 | - [The Odin Project](https://www.theodinproject.com/) 9 | - [Mozilla Developer Network](https://developer.mozilla.org/en-US/docs/Learn) 10 | - [Codecademy](https://www.codecademy.com/learn/paths/web-development) 11 | - [Web Developer Roadmap](https://github.com/kamranahmedse/developer-roadmap) 12 | - [Execute Program](https://executeprogram.com) 13 | - [State of JS](https://2020.stateofjs.com) 14 | 15 | ## Udemy Courses 16 | 17 | - [Advanced CSS and Sass by Jonas Schmedtmann](https://www.udemy.com/course/advanced-css-and-sass/learn/lecture/8274498?start=390#overview) 18 | - [The Complete JavaScript Course by Jonas Schmedtmann](https://www.udemy.com/course/the-complete-javascript-course/learn/) 19 | - [Web Design for Web Developers by Jonas Schmedtmann](https://www.udemy.com/course/web-design-secrets/learn/lecture/2744010#overview) 20 | - [Modern Javascript Bootcamp by Andrew Mead](https://www.udemy.com/course/modern-javascript/learn/) 21 | - [The Complete React Developer Course by Andrew Mead](https://www.udemy.com/course/react-2nd-edition/learn/) 22 | - [The Complete Node.js Developer Course by Andrew Mead](https://www.udemy.com/course/the-complete-nodejs-developer-course-2/learn/) 23 | - [Web Developer Bootcamp by Colt Steele](https://www.udemy.com/course/the-web-developer-bootcamp/learn/lecture/3861190#overview) 24 | - [The Ultimate MySQL Bootcamp by Colt Steele](https://www.udemy.com/course/the-ultimate-mysql-bootcamp-go-from-sql-beginner-to-expert/learn/) 25 | - [Vue JS 2 - The Complete Guide by Maximilian Schwarzmuller](https://www.udemy.com/course/vuejs-2-the-complete-guide/learn/) 26 | - [React - The Complete Guide by Maximilian Schwarzmuller](https://www.udemy.com/course/react-the-complete-guide-incl-redux/learn/) 27 | - [Angular - The Complete Guide by Maximilian Schwarzmuller](https://www.udemy.com/course-dashboard-redirect/?course_id=756150) 28 | - [Ultimate Web Developer by Brad Hussey](https://www.udemy.com/course/web-developer-course/learn/) 29 | - [The Complete Web Developer Course 2.0 by Rob Percival](https://www.udemy.com/course/the-complete-web-developer-course-2/learn/) 30 | - [The Complete Web Development Bootcamp by Dr. Angela Yu](https://www.udemy.com/course/the-complete-web-development-bootcamp/learn/lecture/12638830?start=0#overview) 31 | - [Complete Python Bootcamp by Jose Portilla](https://www.udemy.com/course/complete-python-bootcamp/learn/) 32 | - [Svelte.js - The Complete Guide (incl. Sapper.js) by Maximilian Schwarzmuller](https://www.udemy.com/course/sveltejs-the-complete-guide/learn/) 33 | - [Learn How To Code: Google's Go (golang) by Todd McLeod](https://www.udemy.com/course/sveltejs-the-complete-guide/learn/) 34 | - [Data Structures and Algorithms by Andrei Neagoie](https://www.udemy.com/course/master-the-coding-interview-data-structures-algorithms/learn/) 35 | - [The Complete Junior to Senior Web Developer Roadmap by Andrei Neagoie](https://www.udemy.com/course/the-complete-junior-to-senior-web-developer-roadmap/learn) 36 | - [The Complete Web Developer Zero To Mastery by Andrei Neagoie](https://www.udemy.com/course/the-complete-web-developer-zero-to-mastery/learn/) 37 | - [Advanced Javascript Concepts by Andrei Neagoie](https://www.udemy.com/course/advanced-javascript-concepts/learn/) 38 | - [Javascript the Complete Guide 2020 Beginner to Advanced by Maximilian Schwarzmuller](https://www.udemy.com/course/javascript-the-complete-guide-2020-beginner-advanced/learn/) 39 | 40 | ## Laracasts Courses (by Jeffrey Way) 41 | 42 | - [Laracasts](https://laracasts.com/) 43 | - [The PHP Practitioner](https://laracasts.com/series/php-for-beginners) 44 | - [Laravel 6 From Scratch](https://laracasts.com/series/laravel-6-from-scratch) 45 | - [Object Oriented Principles in PHP](https://laracasts.com/series/object-oriented-principles-in-php) 46 | 47 | ## Reference 48 | 49 | - [Learn web development](https://developer.mozilla.org/en-US/docs/Learn) 50 | - [Emmet (cheatsheet)](https://docs.emmet.io/cheat-sheet/) 51 | - [Markdown (cheatsheet)](https://en.support.wordpress.com/markdown-quick-reference/) 52 | - [HTML MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element) 53 | - [CSS MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference) 54 | - [Javascript MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference) 55 | - [CSS Easing](http://easings.net/) 56 | - [CSS for people who hate CSS](https://paulcpederson.com/articles/css-for-people-who-hate-css/) 57 | 58 | ## Blogs and Subreddits 59 | 60 | - [Stack Overflow](https://stackoverflow.com/) 61 | - [Dev.to](https://dev.to) 62 | - [Devhints.io](https://devhints.io/) 63 | - [Hacker News](https://news.ycombinator.com/) 64 | - [/r/css](https://www.reddit.com/r/css/) 65 | - [/r/Frontend](https://www.reddit.com/r/Frontend/) 66 | - [/r/javascript](https://www.reddit.com/r/javascript/) 67 | - [/r/jquery](https://www.reddit.com/r/jquery/) 68 | - [/r/laravel](https://www.reddit.com/r/laravel/) 69 | - [/r/PHP](https://www.reddit.com/r/PHP/) 70 | - [/r/PHPhelp](https://www.reddit.com/r/PHPhelp/) 71 | - [/r/reactjs](https://www.reddit.com/r/reactjs/) 72 | - [/r/vuejs](https://www.reddit.com/r/vuejs/) 73 | - [/r/web_design](https://www.reddit.com/r/web_design/) 74 | - [/r/webdev](https://www.reddit.com/r/webdev/) 75 | -------------------------------------------------------------------------------- /resources/Mobile.md: -------------------------------------------------------------------------------- 1 | # Mobile Utilities / Frameworks 2 | 3 | - [Adobe Phonegap](https://phonegap.com/) 4 | - [Apache Cordova](https://cordova.apache.org/) 5 | - [Flutter](https://flutter.dev/docs) 6 | - [Framework7](https://framework7.io/templates/) 7 | - [Ionic](https://ionicframework.com/) 8 | - [Vue Native](https://vue-native.io/) 9 | - [Nativescript Vue](https://nativescript-vue.org/) 10 | -------------------------------------------------------------------------------- /resources/Php.md: -------------------------------------------------------------------------------- 1 | # PHP 2 | 3 | ## Reference 4 | 5 | - [php.net](https://www.php.net/) 6 | - [php fig](https://www.php-fig.org/) 7 | - [php the right way](https://phptherightway.com/) 8 | - [Onramp (from Tighten)](https://onramp.dev/) 9 | 10 | ## Back-End Frameworks 11 | 12 | - [CakePHP](https://cakephp.org/) 13 | - [CodeIgniter](https://codeigniter.com/) 14 | - [Laravel](https://laravel.com/) 15 | - [Laravel Frontend](https://laravel.com/docs/7.x/frontend) 16 | - [Lighthouse GraphQL Framework forLaravel](https://lighthouse-php.com) 17 | - [Jetstream](https://jetstream.laravel.com) 18 | - [Livewire](https://laravel-livewire.com) 19 | - [InertiaJS](https://inertiajs.com/) 20 | - [AlpineJS](https://alpinejs.dev/) 21 | - [Blade UI Kit](https://blade-ui-kit.com/blade-icons) 22 | - [Slim](https://www.slimframework.com/) 23 | - [Symfony](https://symfony.com/) 24 | 25 | ## Content Management Systems (CMS) 26 | 27 | - [Wordpress](https://wordpress.com/) 28 | - [Magento](https://magento.com/) 29 | - [Drupal](https://www.drupal.org/) 30 | - [Joomla](https://www.joomla.org/) 31 | 32 | ## Useful Libraries 33 | 34 | - [Carbon](https://carbon.nesbot.com/docs/#api-introduction) 35 | - [Faker](https://github.com/fzaninotto/Faker#fakerproviderlorem) 36 | 37 | ## Testing 38 | 39 | - [PHPUnit - PHP Testing](https://phpunit.de/) 40 | - [PEST PHP](https://pestphp.com/) 41 | -------------------------------------------------------------------------------- /resources/README.md: -------------------------------------------------------------------------------- 1 | # Resources 2 | 3 | - [Public API's](Apis.md) 4 | - [Assets](Assets.md) 5 | - [Cloud Tools](Cloud.md) 6 | - [Digital Ocean Guides](DigitalOcean.md) 7 | - [HTML & CSS Resources](HtmlAndCss.md) 8 | - [JavaScript Resources](Javascript.md) 9 | - [Learning Reference](Learning.md) 10 | - [Mobile](Mobile.md) 11 | - [PHP Reference](Php.md) 12 | - [Utilities](Utilities.md) 13 | - [Wordpress](Wordpress.md) 14 | -------------------------------------------------------------------------------- /resources/Utilities.md: -------------------------------------------------------------------------------- 1 | # Utilities 2 | 3 | ## Web Compatibility 4 | 5 | - [Can I Use?](http://caniuse.com/) 6 | 7 | ## Placeholder Text for Websites 8 | 9 | - [Lipsum](https://lipsum.lipsum.com/feed/html) 10 | - [Hipsum](https://hipsum.co/) 11 | - [Zombie Ipsum](http://www.zombieipsum.com/) 12 | - [Cupcake Ipsum](http://www.cupcakeipsum.com/) 13 | - [Samuel L. Ipsum](http://slipsum.com/) 14 | - [Heisenberg Ipsum](http://heisenbergipsum.com/) 15 | 16 | ## Regex 17 | 18 | - [RegExr - Learn build and test regex](https://regexr.com/) 19 | - [regex101 - build, test, and debug regex](https://regex101.com/) 20 | 21 | ## XML and JSON Utilities 22 | 23 | - [XML Validator](https://www.xmlvalidation.com/) 24 | - [ObjGen - JSON Generator](http://www.objgen.com/json?demo=true) 25 | - [JSONLint - JSON Validation](https://jsonlint.com/) 26 | 27 | ## Editors and Other Tools 28 | 29 | - [VSCode](https://code.visualstudio.com/) 30 | - [VSCode Cheatsheet](https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf) 31 | - [PHPStorm](https://www.jetbrains.com/phpstorm/) 32 | 33 | ## Connection Tools 34 | 35 | - [Transmit](https://panic.com/transmit/) 36 | - [Hyper (alternative and themeable terminal)](https://hyper.is/) 37 | 38 | ## Database Management 39 | 40 | - [TablePlus](https://tableplus.com/) 41 | - [SequelPro (has issues on Mac > Catalina)](https://www.sequelpro.com/) 42 | 43 | ## API Management 44 | 45 | - [Insomnia](https://insomnia.rest/) 46 | - [Postman](https://www.postman.com/) 47 | 48 | ## Image Editing 49 | 50 | - [AffinityDesigner (alternative to Photoshop)](https://affinity.serif.com/en-us/designer/) 51 | - [paint.net - Free image editor for Windows](https://getpaint.net) 52 | 53 | ## Design 54 | 55 | - [Prisma](https://www.prisma.io/) 56 | - [Responsively](https://responsively.app/) 57 | - [Figma](https://www.figma.com/) 58 | - [InVision](https://www.invisionapp.com/) 59 | - [Zeplin](https://zeplin.io/) 60 | 61 | ## Local Development Environments 62 | 63 | - [Installing AMP Stack on Mac](https://jasonmccreary.me/articles/install-apache-php-mysql-mac-os-x-sierra//) 64 | - [Mac Web Development Environment](https://mallinson.ca/posts/5/the-perfect-web-development-environment-for-your-new-mac) 65 | - [Devilbox](http://devilbox.org/) 66 | - [Laragon](https://laragon.org/) 67 | - [MAMP](https://www.mamp.info/en/windows/) 68 | - [WAMP (Windows Only)](http://www.wampserver.com/en/) 69 | - [Laravel Valet (Mac Only)](https://laravel.com/docs/6.x/valet) 70 | - [Setup WSL on Windows for Web Dev](../guides/WSLSetupGuide.md) 71 | - [Laravel Sail](https://laravel.com/docs/10.x/sail) 72 | 73 | # Mail Utilities 74 | 75 | - [Mailtrap SMTP Testing](https://mailtrap.io/) 76 | 77 | ## Debugging, Logging, and Content Management Utilities 78 | 79 | - [Sentry](https://sentry.io/welcome/) 80 | - [Sanity](https://www.sanity.io/) 81 | - [Cloudinary](https://cloudinary.com/) 82 | - [LogRocket](https://logrocket.com/) 83 | -------------------------------------------------------------------------------- /resources/Wordpress.md: -------------------------------------------------------------------------------- 1 | # Wordpress 2 | 3 | ## Plugins 4 | 5 | - Akismet 6 | - AIOSEO 7 | - WPFOrms 8 | - CookieYes 9 | - Booking Calendar 10 | 11 | ## Extensions 12 | 13 | - [Elementor](https://elementor.com/) 14 | - [Divi](https://divisupreme.com) 15 | 16 | ## Themes 17 | 18 | - [Guywp (Free Elementor Themes)](https://guywp.com/free/) 19 | - [Themeforest (Top Wordpress Themes)](https://themeforest.net/popular_item/by_category?category=wordpress) 20 | 21 | ## E-Commerce 22 | 23 | - [Woo Commerce](https://woocommerce.com/) 24 | - [Shopify](https://www.shopify.com/buy-button/wordpress) 25 | -------------------------------------------------------------------------------- /vscode/README.md: -------------------------------------------------------------------------------- 1 | # My VS Code Settings (JSON) 2 | 3 | > Copy the contents of `vscode.settings.json` in this repository into your `vscode.settings.json` file. You will also find a list of the extensions I currently use below. 4 | 5 | - [My vscode.settings.json](vscode/vscode.settings.json) 6 | 7 | ## My Extensions 8 | 9 | ### PHP / Laravel 10 | 11 | - PHP Debug 12 | - PHP Intelephense 13 | - PHP Namespace Resolver 14 | - Blade Formatter 15 | - Laravel Snippets 16 | - Laravel Blade Snippets 17 | - Laravel Extra Intellisense 18 | 19 | ### JavaScript 20 | 21 | - Prettier (for code formatting) 22 | - ESLint (helpswith finding errors in code) 23 | - ES7+ React/Redux/React-Native snippets 24 | - Vetur (adds Vue tooling) 25 | - Vue VSCode Snippetes - (for Vue snippets) 26 | 27 | ### CSS 28 | 29 | Tailwind CSS Intellisense (helps with Tailwind autocomplete) 30 | 31 | ### Tools 32 | 33 | - GitLens (For viewing detailed git commits inline) 34 | - Github Copilot (For AI Assistance in Code) 35 | - WSL (For Windows Users Using WSL As A Dev Environment) 36 | - Docker (For anyone using Docker as a Dev Environment) 37 | 38 | ### Themes 39 | 40 | - Black Ocean (the primary theme I use; blue and green on a dark background) 41 | - Material Icon Theme (changes the icons of your project in VSCode) 42 | - Rainglow - Dayle Rees (for multiple nice themes to choose from) 43 | -------------------------------------------------------------------------------- /vscode/vscode.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "workbench.colorTheme": "Black Ocean", 3 | "editor.minimap.enabled": false, 4 | "workbench.colorCustomizations": { 5 | "statusBar.background": "#161616", 6 | "statusBar.noFolderBackground": "#323232", 7 | "statusBar.debuggingBackground": "#484848" 8 | }, 9 | "git.enableSmartCommit": true, 10 | "git.confirmSync": false, 11 | "git.autofetch": true, 12 | "[vue]": { 13 | "editor.defaultFormatter": "octref.vetur" 14 | }, 15 | "window.zoomLevel": 0, 16 | "explorer.autoReveal": false, 17 | "workbench.editor.enablePreview": false, 18 | "[html]": { 19 | "editor.defaultFormatter": "esbenp.prettier-vscode" 20 | }, 21 | "editor.acceptSuggestionOnCommitCharacter": false, 22 | "[javascript]": { 23 | "editor.defaultFormatter": "vscode.typescript-language-features", 24 | "editor.formatOnSave": true 25 | }, 26 | "breadcrumbs.enabled": false, 27 | "prettier.quoteProps": "consistent", 28 | "prettier.semi": false, 29 | "workbench.startupEditor": "newUntitledFile", 30 | "extensions.ignoreRecommendations": true, 31 | "[javascriptreact]": { 32 | "editor.defaultFormatter": "esbenp.prettier-vscode" 33 | }, 34 | "editor.defaultFormatter": "esbenp.prettier-vscode", 35 | "editor.formatOnSave": true, 36 | "prettier.trailingComma": "none", 37 | "prettier.arrowParens": "avoid", 38 | "prettier.jsxSingleQuote": true, 39 | "prettier.singleQuote": true, 40 | "workbench.editorAssociations": { 41 | "*.ipynb": "jupyter.notebook.ipynb" 42 | }, 43 | "[php]": { 44 | "editor.defaultFormatter": "bmewburn.vscode-intelephense-client" 45 | }, 46 | "editor.inlineSuggest.enabled": true, 47 | "powermode.enabled": true, 48 | "powermode.enableStatusBarComboCounter": false, 49 | "powermode.enableStatusBarComboTimer": false, 50 | "powermode.enableShake": false, 51 | "[blade]": { 52 | "editor.defaultFormatter": "shufo.vscode-blade-formatter" 53 | }, 54 | "workbench.iconTheme": "material-icon-theme", 55 | "workbench.tree.indent": 4, 56 | "html.format.indentHandlebars": true, 57 | "html.format.indentInnerHtml": true, 58 | "html.format.templating": true, 59 | "html.format.wrapAttributes": "force-expand-multiline", 60 | "bladeFormatter.format.wrapAttributes": "force-expand-multiline", 61 | "[json]": { 62 | "editor.defaultFormatter": "vscode.json-language-features" 63 | } 64 | } 65 | --------------------------------------------------------------------------------