Skip to content

Instantly share code, notes, and snippets.

@jdecode
Last active July 4, 2023 11:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jdecode/3fcb9789c2ebb4b6e05fa0c61c034f1c to your computer and use it in GitHub Desktop.
Save jdecode/3fcb9789c2ebb4b6e05fa0c61c034f1c to your computer and use it in GitHub Desktop.
Laravel developer roadmap [WIP]

Laravel developer roadmap

[knowledge portfolio]

Highly opinionated, for F&L

Tech stack

  1. Docker

    1. Read Dockerfile
    2. Write Dockerfile
    3. Images vs Containers
    4. What is an ENTRYPOINT?
    5. Build images
    6. Run images without docker-compose
    7. Run commands on containers
    8. Connect with containers
    9. Have an account on Docker Hub
    10. Push images to docker registries, using dockerhub as an example
    11. Learn docker CLI commands
    12. docker ps
    13. docker containers -a
    14. docker network
    15. docker volume
    16. What is purge?
    17. Learn/understand docker container, network and volume naming conventions
    18. Learn how to read the output of "docker ps"
    19. Volume mapping
    20. Port mapping
  2. Docker-compose

    1. Read docker-compose.yml
    2. Write docker-compose.yml
    3. Structure of compose file
      1. version
      2. services
      3. networks
      4. volumes
    4. Services
      1. build vs image
      2. context
      3. environment variables
      4. dependencies
      5. port mapping
      6. volume mapping
      7. network
    5. Volume
      1. Create volume/storage on disk
      2. Mount volume to container
      3. Learn how/when the volume is cleared
    6. Network
      1. Create IP range
      2. Connect containers to network
      3. Prevent IP conflicts
      4. Fix conflicts
  3. GitHub

    1. Single account with multiple emails
    2. Setup SSH keys
    3. Setup GPG keys
    4. What comprises of a good README and how to write one
    5. Branches
    6. Actions / Workflows
    7. Secrets
    8. Archive/Delete repositories
    9. Transfer ownership of repositories
    10. Personal access tokens : Fine grained
    11. GitHub Apps
    12. OAuth Apps
    13. OAuth Approved Apps
    14. Releases
    15. Environments
    16. Wiki
    17. Projects
    18. Webhooks
  4. IDE setup

    • The best IDE is what you are most comfortable with
    • The IDE should be configured to do the heavy lifting for you
    • The IDE should save your time and effort, and should allow you to focus on the task at hand
    • DO NOT USE "Git Lens" or any such tool that "adds the noise" rather than "removing the noise"
      • You do not need to know who wrote the code, you need to know what the code does
      • If you need want to know who wrote the code, then you are not looking for the solution, you are looking for the problem

    Consider the following list as "must-have" for your IDE, and not "nice-to-have"

    A well configured IDE should be able to do the following:

    1. Use the PHP version of the docker container
    2. Debug using Xdebug
    3. Run tests
    4. Easily access terminal
    5. Run git commands : commit, pull rebase, push, stash, unstash etc
    6. Run docker/docker-compose commands : build, up, down, exec etc
    7. Setup extensions/plugins that help you get things done, and well
  5. Boilerplate

    1. Laravel

    2. Composer git hooks
      1. How is the package working with containers?
    3. IDE helper

      1. When does this run?
      2. What does this do?
    4. PestPHP

      1. Installation and setup
      2. it and test functions
      3. datasets
      4. beforeEach and beforeAll
      5. Pest.php
      6. Migrations and Seeders
      7. Common assertions
      8. Higher order testing
      9. Skipping tests
      10. Filtering tests
      11. Running tests
      12. Code coverage controls
      13. Architectural testing
    5. PHP Mess Detector
      1. Using the ruleset XML file
    6. Parallel lint
    7. Security checker
      1. Know the impact of the vulnerabilities identified by the security checker
    8. Telescope

      1. Installation and setup
      2. Using telescope for debugging and monitoring requests, jobs, exceptions, mails, notifications, queries, models, cache, schedules, logs, dumps, events, commands, queues, and more
    9. Xdebug

      1. Installation and setup
      2. Debugging API requests, console commands, and web requests
    10. Postman

      1. Installation and setup [in the boilerplate]
      2. Account setup
      3. Team setup
      4. GitHub integration[for collection backup]
      5. Setup collection, with variables, pre-request scripts and tests
      6. Understand the test execution flow [collection, folder, request]
      7. Use test scripts to assert the response
      8. Use test scripts to set variables, based on response
      9. Use runner to run the collection, sans environment
      10. Use container to run the collection
      11. Use Composer script postman to run the collection
      12. Setup CircleCI to run the collection
      13. Setup GitHub Actions to run the collection
    11. Postmark

      1. Configure Postmark for sending emails, using the Postmark token
      2. Setup sending signatures
      3. Setup DNS (DKIM / SPF / DMARC)
      4. Ensure emails are being received in the inbox (not SPAM)
  6. DevOps

    1. CI/CD
      1. CircleCI

        1. Setup project repository
        2. Understand the CircleCI file : workflow, jobs, steps, and commands
        3. Check rejected commits at Reviewee
        4. Run containers
        5. Run composer script ci
        6. Setup Reviewee webhook in Project settings for Slack notifications
        7. SSH into the container
        8. Deploy to Heroku
      2. GitHub Actions

        1. Setup project repository
        2. Understand the GitHub Actions file : workflow, jobs, steps, and commands
        3. Check rejected commits at Reviewee
        4. Run containers
        5. Run composer script ci
        6. Setup Reviewee webhook for Slack notifications
        7. Deploy to Heroku
    2. Heroku

      1. Team setup
      2. Pipeline setup
      3. Apps setup : Staging and Production
      4. Dynos
        1. Web
        2. Worker
        3. Scheduler
      5. Add-ons
        1. Postgres
        2. Rollbar
        3. Papertrail
        4. New Relic
        5. Scheduler
        6. Redis [if required per project requirements]
      6. Environment variables
      7. Buildpacks
      8. Deployments
      9. Releases
      10. Metrics
      11. Logs
      12. Activity
      13. Billing
      14. Account
      15. Connect to app via SSH
      16. Run commands on app
      17. Webhooks
    3. Rollbar

      1. Setup project
      2. Setup environments [staging and production]
      3. Setup Slack notifications
      4. Setup Trello integration, with rules
      5. Use Rollbar token in boilerplate
    4. Papertrail

      1. Setup project
      2. Filter logs
    5. New Relic

      1. Setup project
      2. Setup environments [staging and production]
      3. Setup Apdex score
      4. Understand the dashboard : transactions, errors, throughput, response time, database, external services, background jobs
    6. Terraform

      1. Understand the Terraform file : providers, resources, variables, outputs
      2. Heroku deployment script
      3. Add-ons : Postgres, Rollbar, Papertrail, New Relic
      4. Pipelines, apps, and dynos
      5. Environment variables
      6. CircleCI configuration
      7. AWS setup : IAM, S3, policies [staging and production]
  7. Security

    1. [WIP]
  8. Backups

    1. [WIP]
  9. Performance

    1. [WIP]
@jdecode
Copy link
Author

jdecode commented Jul 4, 2023

Knowledge Portfolio

Tech skills

  1. Docker

    1. Read Dockerfile
    2. Write Dockerfile
    3. Images vs Containers
    4. What is an ENTRYPOINT?
    5. Build images
    6. Run images without docker-compose
    7. Run commands on containers
    8. Connect with containers
    9. Have an account on Docker Hub
    10. Push images to docker registries, using dockerhub as an example
    11. Learn docker CLI commands
    12. docker ps
    13. docker containers -a
    14. docker network
    15. docker volume
    16. What is purge?
    17. Learn/understand docker container, network and volume naming conventions
    18. Learn how to read the output of "docker ps"
    19. Volume mapping
    20. Port mapping
  2. Docker-compose

    1. Read docker-compose.yml
    2. Write docker-compose.yml
    3. Structure of compose file
      1. version
      2. services
      3. networks
      4. volumes
    4. Services
      1. build vs image
      2. context
      3. environment variables
      4. dependencies
      5. port mapping
      6. volume mapping
      7. network
    5. Volume
      1. Create volume/storage on disk
      2. Mount volume to container
      3. Learn how/when the volume is cleared
    6. Network
      1. Create IP range
      2. Connect containers to network
      3. Prevent IP conflicts
      4. Fix conflicts
  3. GitHub

    1. Single account with multiple emails
    2. Setup SSH keys
    3. Setup GPG keys
    4. What comprises of a good README and how to write one
    5. Branches
    6. Actions / Workflows
    7. Secrets
    8. Archive/Delete repositories
    9. Transfer ownership of repositories
    10. Personal access tokens : Fine grained
    11. GitHub Apps
    12. OAuth Apps
    13. OAuth Approved Apps
    14. Releases
    15. Environments
    16. Wiki
    17. Projects
    18. Webhooks
  4. IDE setup

    • The best IDE is what you are most comfortable with
    • The IDE should be configured to do the heavy lifting for you
    • The IDE should save your time and effort, and should allow you to focus on the task at hand
    • DO NOT USE "Git Lens" or any such tool that "adds the noise" rather than "removing the noise"
      • You do not need to know who wrote the code, you need to know what the code does
      • If you need want to know who wrote the code, then you are not looking for the solution, you are looking for the problem
    Consider the following list as "must-have" for your IDE, and not "nice-to-have"

    A well configured IDE should be able to do the following:

    1. Use the PHP version of the docker container
    2. Debug using Xdebug
    3. Run tests
    4. Easily access terminal
    5. Run git commands : commit, pull rebase, push, stash, unstash etc
    6. Run docker/docker-compose commands : build, up, down, exec etc
    7. Setup extensions/plugins that help you get things done, and well
  5. Boilerplate

    1. Laravel
    2. Composer git hooks
      1. How is the package working with containers?
    3. IDE helper
      1. When does this run?
      2. What does this do?
    4. PestPHP
      1. Installation and setup
      2. it and test functions
      3. datasets
      4. beforeEach and beforeAll
      5. Pest.php
      6. Migrations and Seeders
      7. Common assertions
      8. Higher order testing
      9. Skipping tests
      10. Filtering tests
      11. Running tests
      12. Code coverage controls
      13. Architectural testing
    5. PHP Mess Detector
      1. Using the ruleset XML file
    6. Parallel lint
    7. Security checker
      1. Know the impact of the vulnerabilities identified by the security checker
    8. Telescope
      1. Installation and setup
      2. Using telescope for debugging and monitoring requests, jobs, exceptions, mails, notifications, queries, models, cache, schedules, logs, dumps, events, commands, queues, and more
    9. Xdebug
      1. Installation and setup
      2. Debugging API requests, console commands, and web requests
    10. Postman
      1. Installation and setup [in the boilerplate]
      2. Account setup
      3. Team setup
      4. GitHub integration[for collection backup]
      5. Setup collection, with variables, pre-request scripts and tests
      6. Understand the test execution flow [collection, folder, request]
      7. Use test scripts to assert the response
      8. Use test scripts to set variables, based on response
      9. Use runner to run the collection, sans environment
      10. Use container to run the collection
      11. Use Composer script postman to run the collection
      12. Setup CircleCI to run the collection
      13. Setup GitHub Actions to run the collection
    11. Postmark
      1. Configure Postmark for sending emails, using the Postmark token
      2. Setup sending signatures
      3. Setup DNS (DKIM / SPF / DMARC)
      4. Ensure emails are being received in the inbox (not SPAM)
  6. DevOps

    1. CI/CD
      1. CircleCI
        1. Setup project repository
        2. Understand the CircleCI file : workflow, jobs, steps, and commands
        3. Check rejected commits at Reviewee
        4. Run containers
        5. Run composer script ci
        6. Setup Reviewee webhook in Project settings for Slack notifications
        7. SSH into the container
        8. Deploy to Heroku
      2. GitHub Actions
        1. Setup project repository
        2. Understand the GitHub Actions file : workflow, jobs, steps, and commands
        3. Check rejected commits at Reviewee
        4. Run containers
        5. Run composer script ci
        6. Setup Reviewee webhook for Slack notifications
        7. Deploy to Heroku
    2. Heroku
      1. Team setup
      2. Pipeline setup
      3. Apps setup : Staging and Production
      4. Dynos
        1. Web
        2. Worker
        3. Scheduler
      5. Add-ons
        1. Postgres
        2. Rollbar
        3. Papertrail
        4. New Relic
        5. Scheduler
        6. Redis [if required per project requirements]
      6. Environment variables
      7. Buildpacks
      8. Deployments
      9. Releases
      10. Metrics
      11. Logs
      12. Activity
      13. Billing
      14. Account
      15. Connect to app via SSH
      16. Run commands on app
      17. Webhooks
    3. Rollbar
      1. Setup project
      2. Setup environments [staging and production]
      3. Setup Slack notifications
      4. Setup Trello integration, with rules
      5. Use Rollbar token in boilerplate
    4. Papertrail
      1. Setup project
      2. Filter logs
    5. New Relic
      1. Setup project
      2. Setup environments [staging and production]
      3. Setup Apdex score
      4. Understand the dashboard : transactions, errors, throughput, response time, database, external services, background jobs
    6. Terraform
      1. Understand the Terraform file : providers, resources, variables, outputs
      2. Heroku deployment script
      3. Add-ons : Postgres, Rollbar, Papertrail, New Relic
      4. Pipelines, apps, and dynos
      5. Environment variables
      6. CircleCI configuration
      7. AWS setup : IAM, S3, policies [staging and production]
  7. Security

    1. [WIP]
  8. Backups

    1. [WIP]
  9. Performance

    1. [WIP]

Personal skills

  1. Work ethics

    1. Empathy
    2. [WIP]
  2. Critical thinking

    1. [WIP]
  3. Time keeping

    1. [WIP]
  4. Dependability

    1. [WIP]
  5. Leadership skills

    1. Conflict resolution
    2. [WIP]
  6. Willingness to learn

    1. [WIP]
  7. Patience

    1. [WIP]
  8. Competitive spirit

    1. [WIP]
  9. Motivation

    1. [WIP]

Communication skills

  1. Understanding

    1. [WIP]
  2. Understandable

    1. [WIP]
  3. Writer

    1. [WIP]
  4. Speaker

    1. [WIP]
  5. Reader

    1. [WIP]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment