<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nehal Hasnayeen</title>
    <description>The latest articles on DEV Community by Nehal Hasnayeen (@hasnayeen).</description>
    <link>https://dev.to/hasnayeen</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F106296%2F231b3ea8-b482-41d9-8754-a62bd2a87725.png</url>
      <title>DEV Community: Nehal Hasnayeen</title>
      <link>https://dev.to/hasnayeen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hasnayeen"/>
    <language>en</language>
    <item>
      <title>Interactive example of building a component with TailwindCSS</title>
      <dc:creator>Nehal Hasnayeen</dc:creator>
      <pubDate>Thu, 17 Sep 2020 02:47:43 +0000</pubDate>
      <link>https://dev.to/hasnayeen/interactive-example-of-building-a-component-with-tailwindcss-3pe4</link>
      <guid>https://dev.to/hasnayeen/interactive-example-of-building-a-component-with-tailwindcss-3pe4</guid>
      <description>&lt;p&gt;I'm doing an experiment on building an interactive tutorial. I created a proof of concept which shows making of a UI component with TainwindCSS. I'm looking for feedback on how to improve this further. Check it out here -&amp;gt; (&lt;a href="https://zukoni.com/tutorials/sign-up"&gt;https://zukoni.com/tutorials/sign-up&lt;/a&gt;)&lt;/p&gt;

</description>
      <category>tailwindcss</category>
      <category>webdev</category>
      <category>css</category>
    </item>
    <item>
      <title>Laravel Developer Roadmap 2020</title>
      <dc:creator>Nehal Hasnayeen</dc:creator>
      <pubDate>Tue, 07 Apr 2020 16:44:32 +0000</pubDate>
      <link>https://dev.to/hasnayeen/laravel-developer-roadmap-2020-2f8m</link>
      <guid>https://dev.to/hasnayeen/laravel-developer-roadmap-2020-2f8m</guid>
      <description>&lt;p&gt;Hey Laravel enthusiasts 👋, trying to put up a roadmap for "How to become a Laravel developer in 2020". Aim is to put up a straightforward sequential topics that one may need to learn to become a skilled Laravel developer so that beginners can easily figure out what to learn next. I've put up a basic layout but need more input from expert of the communities to make it more useful.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Hasnayeen"&gt;
        Hasnayeen
      &lt;/a&gt; / &lt;a href="https://github.com/Hasnayeen/laravel-developer-roadmap"&gt;
        laravel-developer-roadmap
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Roadmap to becoming a Laravel developer
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Laravel Developer Roadmap 2024&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Roadmap to becoming a Laravel developer in 2024&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;Below is a simple roadmap charts demonstrating the paths that you can take and the technologies that you would want to adopt in order to become a laravel developer.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is simply a guide to give you an idea. It helps you navigate the ecosystem and pickup topics to learn as you go so that you don't get overwhelmed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Roadmap for other technology can be found &lt;a href="https://github.com/liuchong/awesome-roadmaps"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Roadmap&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Hasnayeen/laravel-developer-roadmap./images/roadmap.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IQOq-ZnG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/Hasnayeen/laravel-developer-roadmap./images/roadmap.png" alt="Roadmap"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How to use&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Start at the top, if you don't know the pre requisites, first learn those. Then start at laravel and learn each topic serially. For each topic, first learn the essentials (primary, marked in red background). Then you can go to next topic and learn its essentials. After you learn first few basic topic, you can come back to first topic again and learn the secondary knowledge (marked…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Hasnayeen/laravel-developer-roadmap"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Let me know how can I improve this. Thanks!&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Local Development Environment with Docker for PHP (Part 3)</title>
      <dc:creator>Nehal Hasnayeen</dc:creator>
      <pubDate>Sat, 19 Oct 2019 08:44:05 +0000</pubDate>
      <link>https://dev.to/hasnayeen/local-development-environment-with-docker-for-php-part-3-381l</link>
      <guid>https://dev.to/hasnayeen/local-development-environment-with-docker-for-php-part-3-381l</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Setting Multiple PHP runtime&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In our last post we’ve successfully setup a development environment to develop applications in Laravel, though this setup can be use to build any PHP application. Now suppose for whatever use case if we need to test our application for different PHP version than our current one, it’d be very complex and messier process to do it in our host machine with native setup. But with docker we can do this without any hassle (also it can be achieved in many other ways e.g vagrant).&lt;/p&gt;

&lt;h3&gt;
  
  
  Install PHP 5.6
&lt;/h3&gt;

&lt;p&gt;We’ll install php 5.6 version. Everything will be same as the way we installed php 7 earlier. We’ll use php:5.6-fpm image from docker hub.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QuL9NMOY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2478/1%2ApYcEGPjM8hQE_dPWKg6ksw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QuL9NMOY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2478/1%2ApYcEGPjM8hQE_dPWKg6ksw.png" alt="Create a conatiner for php 5.6" width="800" height="276"&gt;&lt;/a&gt;&lt;em&gt;Create a conatiner for php 5.6&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Do not select any network for the container right now, we will do it later.&lt;/p&gt;

&lt;p&gt;We will map our sites directory to the /var/www directory in the container.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yUSfYE2V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AbIvGgb8Le7fn9oaJrHZJtA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yUSfYE2V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AbIvGgb8Le7fn9oaJrHZJtA.png" alt="Map project directory in Volumes tab" width="800" height="179"&gt;&lt;/a&gt;&lt;em&gt;Map project directory in Volumes tab&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Finally in Command tabs put /var/www as value in Working Dir field&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hClahP_g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2414/1%2AHXzNSOw-xB_Za_L84-JzeA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hClahP_g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2414/1%2AHXzNSOw-xB_Za_L84-JzeA.png" alt="" width="800" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now start the container by hitting start container button. Docker will pull the image from docker hub registry and then start a container by php-5.6 name.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assigning an alias&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now we’ll assign a alias called php for this container so that our nginx configuration works for both php-7 and php-5.6 container. If you look in the nginx config for any application we are forwarding all request from nginx to php:9000. Assigning a alias for php-5.6 container will allow us use the same config for both php container. First stop the container and then run the below command from the command line (portainer doesn’t have an option for assigning alias yet)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker network connect --alias=php php php-5.6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;So the above command connect a container to a network, we’re connecting php-5.6 container to php network and assigning a alias php. Now start the container from portainer. Now you can run all the php application in php 5.6 version. Now if you want to run again in php 7 runtime first stop the php-5.6 container and then start the php 7 container.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using docker you can easily test your app for different php version above mention way. In next post we’ll see how we to run laravel asset compiling package elixir or mix to compile our frontend stuff.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.hasnayeen.dev/local-development-environment-with-docker-for-php"&gt;Part-1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.hasnayeen.dev/local-development-environment-with-docker-for-php-2"&gt;Part-2&lt;/a&gt;&lt;/p&gt;

</description>
      <category>php</category>
      <category>laravel</category>
      <category>docker</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Local Development Environment with Docker for PHP (Part 2)</title>
      <dc:creator>Nehal Hasnayeen</dc:creator>
      <pubDate>Thu, 17 Oct 2019 05:26:48 +0000</pubDate>
      <link>https://dev.to/hasnayeen/local-development-environment-with-docker-for-php-part-2-150g</link>
      <guid>https://dev.to/hasnayeen/local-development-environment-with-docker-for-php-part-2-150g</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Setting MySQL, Adminer and Redis&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In our last &lt;a href="https://www.hasnayeen.dev/local-development-environment-with-docker-for-php"&gt;post&lt;/a&gt; we installed docker in our machine and setup our environment with several containers. We added nginx container as a server, a php-fpm container and and installed a laravel application. Now we’ll install a mysql database to persist our application data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install MySQL
&lt;/h3&gt;

&lt;p&gt;Before we create a mysql container we’ll create a volume to persist the database data and map it to a directory in the docker host. These volume will persist our data even if we remove the mysql container so we’ll not lose our data. Go to the volumes page in portainer dashboard and create a volume with any name you want&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hnUNH3w2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2100/1%2Aur0pakZo72aujOWtKATx_Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hnUNH3w2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2100/1%2Aur0pakZo72aujOWtKATx_Q.png" alt="Create a volume to persist db data" width="800" height="380"&gt;&lt;/a&gt;&lt;em&gt;Create a volume to persist db data&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now let’s create a mysql container&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fjq_x_es--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2448/1%2AC4YmteRZNkzXn8dQOzfMag.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fjq_x_es--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2448/1%2AC4YmteRZNkzXn8dQOzfMag.png" alt="Create a mysql container" width="800" height="341"&gt;&lt;/a&gt;&lt;em&gt;Create a mysql container&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Give the container a name and let’s use the official mysql image. We don’t need to expose any ports publicly because our application will talk to the db and it can because it’ll be in the same network. Attach the newly created volume to /var/lib/mysql directory in docker host&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GMywcWe4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2412/1%2Aq0zi20rBRh1kPHzcrKub7A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GMywcWe4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2412/1%2Aq0zi20rBRh1kPHzcrKub7A.png" alt="Attach db-data volume to docker host" width="800" height="180"&gt;&lt;/a&gt;&lt;em&gt;Attach db-data volume to docker host&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Also select the php network in the network tab. In the Env tab add the below environment varibles&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--o4dmTbee--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2414/1%2AUhaTQ2dS-eD30KOcArGQuw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--o4dmTbee--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2414/1%2AUhaTQ2dS-eD30KOcArGQuw.png" alt="Add environment variable for our container" width="800" height="223"&gt;&lt;/a&gt;&lt;em&gt;Add environment variable for our container&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;MYSQL_ROOT_PASSWORD create a password for root mysql user, MYSQL_DATABASE creates database with the name and it’s optional so you can omit this if you want. MYSQL_USER and MYSQL_PASSWORD create a new mysql user and its password and these are optional too. Now create the container by hitting start container button.&lt;/p&gt;

&lt;p&gt;Let’s check our application can connect to the database. First configure our database connection in env file of our project.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=example
DB_USERNAME=hasnayeen
DB_PASSWORD=secret
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now connect to php container bash console from portainer dashboard and you’ll be in the /var/www directory. cd into the example directory and run migration command&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YCW80Vyj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2422/1%2ATjvfcGB9HWK7e7DCfBvEHQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YCW80Vyj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2422/1%2ATjvfcGB9HWK7e7DCfBvEHQ.png" alt="Test our application can talk to db container" width="800" height="359"&gt;&lt;/a&gt;&lt;em&gt;Test our application can talk to db container&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Our application has successfully connected to the db container and migrated the default database tables.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install Adminer
&lt;/h3&gt;

&lt;p&gt;We can use the mysql cli in the dbcontainer to interact with database but we like to do it through a graphical interface. Many people use phpmyadmin as a database manager but I personally use adminer so I’m going to create a container using the official adminer image&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aUW0fKZb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2490/1%2A3nEZVkit9x1LtO5je-UVeA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aUW0fKZb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2490/1%2A3nEZVkit9x1LtO5je-UVeA.png" alt="Create a adminer container" width="800" height="277"&gt;&lt;/a&gt;&lt;em&gt;Create a adminer container&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I named the container adminer and published all exposed port. Docker is going to assign a random port to 8080 of the container but if you want to assign a specific port on your host then you can map it through the Port mapping option. Let’s create the container&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fRMgROn---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2478/1%2AhILFuScsQKF_H-uZAcidwQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fRMgROn---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2478/1%2AhILFuScsQKF_H-uZAcidwQ.png" alt="Our adminer container is running and mapped to a random port" width="800" height="312"&gt;&lt;/a&gt;&lt;em&gt;Our adminer container is running and mapped to a random port&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You can see docker has assigned 32768 port to container 8080 port. Click the link and we see the login page of adminer&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iUXIeSy8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2648/1%2A51oqrt5YrChLVCSXcnfURw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iUXIeSy8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2648/1%2A51oqrt5YrChLVCSXcnfURw.png" alt="Login page of adminer" width="800" height="386"&gt;&lt;/a&gt;&lt;em&gt;Login page of adminer&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Fill all the field with proper value and hit login. Remember the server name is the name of the container of our mysql container which is in our case db.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2vZTzHWb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2646/1%2Af0RoTwAdGIPBcq86WFxG5A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2vZTzHWb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2646/1%2Af0RoTwAdGIPBcq86WFxG5A.png" alt="" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Install Redis
&lt;/h3&gt;

&lt;p&gt;Let’s now create a redis container to use as a cache memory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m4Tlh7P---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2070/1%2At1rRZ0mydVzd9isqqVxMfQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m4Tlh7P---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2070/1%2At1rRZ0mydVzd9isqqVxMfQ.png" alt="Create a redis container" width="800" height="482"&gt;&lt;/a&gt;&lt;em&gt;Create a redis container&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Attach the container to the php network and to persist our data we can use the db-data volume and mapped it to /var/lib/redis directory of docker host. Finally add a command in the command tab to run redis with appendonly mode and create the container&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ChbL3uEv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2414/1%2App9X1Yeb9d75FyHK3J2_9Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ChbL3uEv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2414/1%2App9X1Yeb9d75FyHK3J2_9Q.png" alt="Add a command to run redis with appendonly mode" width="800" height="251"&gt;&lt;/a&gt;&lt;em&gt;Add a command to run redis with appendonly mode&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now we need to configure our .env file in our application&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CACHE_DRIVER=redis

REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Cache driver will be redis and redis host name is the name of our container which is redis. We’ll also need to predis/predis package to use redis in our application. So connect to the php container bash terminal and install the package&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ composer require predis/predis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;After predis has been installed let’s check it’s working. We’ll add to route to our routes file, one for putting a value in the cache and one to get the value, so add the below code in the routes/web.php file&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Route::get('get', function() {
    return \Illuminate\Support\Facades\Cache::get('hello');
});

Route::get('put', function() {
    return \Illuminate\Support\Facades\Cache::put('hello', 'world', 5);
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now first visit the put routes to put world as a value of hello key. It’ll return nothing but if we now visit the get route we’ll see it retrieve the value of hello key from the cache and return it to us.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RcGlqM2u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2640/1%2AOMac2ow4KGEYNoE2ug04og.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RcGlqM2u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2640/1%2AOMac2ow4KGEYNoE2ug04og.png" alt="Checking our redis container is working" width="800" height="236"&gt;&lt;/a&gt;&lt;em&gt;Checking our redis container is working&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;So we have added few more containers and our machine is ready to build awesome applications with laravel.&lt;/p&gt;

&lt;p&gt;In next post we’ll see how we can use different PHP versions and databases to test our application without messing with our host machine.&lt;/p&gt;

&lt;p&gt;If you liked the content please consider to share the knowledge and don’t forget to subscribe for more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.hasnayeen.dev/local-development-environment-with-docker-for-php-3"&gt;Part-3&lt;/a&gt;&lt;/p&gt;

</description>
      <category>php</category>
      <category>laravel</category>
      <category>docker</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Local Development Environment with Docker for PHP (Part-1)</title>
      <dc:creator>Nehal Hasnayeen</dc:creator>
      <pubDate>Wed, 16 Oct 2019 10:48:49 +0000</pubDate>
      <link>https://dev.to/hasnayeen/local-development-environment-with-docker-for-php-part-1-3890</link>
      <guid>https://dev.to/hasnayeen/local-development-environment-with-docker-for-php-part-1-3890</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Setting Docker, Portainer, Nginx, PHP and Composer&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you work with different language, tools or technology its really hard some time to manage all these different environments in local machine. Docker is a great tool which give us isolated environment to build our application with required tools and libraries without messing with the host machine. You can package up an application with all of the parts it needs, such as libraries and other dependencies, and run it on any machine which have docker installed without installing a single piece of software. You can use different version of any tools separately without any hassle. So let’s see how can we use docker to setup our development environment to build application with Laravel.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install docker
&lt;/h3&gt;

&lt;p&gt;I’m using antergos which is arch-linux based os, so installation instructions step below are for arch-linux distro. If you are on Mac or Windows or any other linux distro visit &lt;a href="https://www.docker.com/community-edition#download" rel="noopener noreferrer"&gt;here&lt;/a&gt; for installation instruction.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo pacman -S docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;To start the docker service (for any linux OS that use systemctl)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo systemctl start docker.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;To start on system boot&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo systemctl enable docker.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  Install Portainer
&lt;/h3&gt;

&lt;p&gt;Portainer is a container which gives a nice ui dashboard to use docker easily. We’ll create and run the portainer container like below&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo docker run -d --name portainer -p 8000:8000 -p 9443:9443 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Above will create a container from portainer image and then run it in background ( -d flag make the container run in background). The command will search for the portainer image in local machine and if it doesn’t find the image then it will pull the image from docker image registry. We’ll run the container in port 9443 so port 9443 should be available, but if you want to use any other port than specify it via the -p flag ( -p 8080:9443 ). Also notice that we have named our container portainer with — name flag. You can name your container whatever you want. When the download is complete we can check that the container is running by $ docker ps command. It’ll show a list of all the running container&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                    NAMES
1f5bb115d327        portainer/portainer   "/portainer"        5 seconds ago         Up 1 second         0.0.0.0:9000-&amp;gt;9000/tcp   portainer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now you can visit the dashboard by visiting localhost in your browser. You’ll see below screen&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2644%2F1%2AIiMm3jKgkKHpoWUXMdQCSg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2644%2F1%2AIiMm3jKgkKHpoWUXMdQCSg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Provide a password for admin user account and then login to the dashboard. You’ll see a screen like below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2648%2F1%2AWkN1z_PM0cHqNpD_tJzLKw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2648%2F1%2AWkN1z_PM0cHqNpD_tJzLKw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select the first one and connect, you’ll see a nice dashboard&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2642%2F1%2AiiMMDvavsXI1S_KdvrWQIA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2642%2F1%2AiiMMDvavsXI1S_KdvrWQIA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Create a PHP network
&lt;/h3&gt;

&lt;p&gt;First we will create a network for php application only. Click the network menu from sidebar and then give it some name like php and click create.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2482%2F1%2AcVDl1WRrjx5lpluCRpt1Ug.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2482%2F1%2AcVDl1WRrjx5lpluCRpt1Ug.png" alt="Create a php network"&gt;&lt;/a&gt;&lt;em&gt;Create a php network&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Install Nginx
&lt;/h3&gt;

&lt;p&gt;First we will create a container as our server and we’ll use official nginx image from docker hub. Go to Containers page from sidebar menu and click on Add Container button&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2646%2F1%2AFjabcxJNQtHKD9dgtrP27w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2646%2F1%2AFjabcxJNQtHKD9dgtrP27w.png" alt="Add New Container"&gt;&lt;/a&gt;&lt;em&gt;Add New Container&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let’s give our container a name of server and the image name which is nginx. Click the publish all exposed ports which’ll expose port 80. Next click map additional port and map our host machine port 80 to container port 80 like below&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2072%2F1%2ALbOqkYrRA3RlEBiMyIMwLA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2072%2F1%2ALbOqkYrRA3RlEBiMyIMwLA.png" alt="Map host port 80 to container port 80"&gt;&lt;/a&gt;&lt;em&gt;Map host port 80 to container port 80&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Next create two folders where you will keep your projects. This can be anywhere in your file system. One folders is to keep our application source code and the other is for nginx configuration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AZUYYe0X6Psy8NsqtuhDJFw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AZUYYe0X6Psy8NsqtuhDJFw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now under Advanced Container Settings click the volume tab and bind sites directory to /var/www in container and nginx-conf directory to /etc/nginx/conf.d .&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2432%2F1%2ATWBD6U3WvslSYpjjZegxFw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2432%2F1%2ATWBD6U3WvslSYpjjZegxFw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next select the php network we created earlier in network tab. Finally hit the start container button. First portainer will pull the nginx image from registry and then start the container&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2090%2F1%2Aqyle5bNsvQaeVH1BOEV2sA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2090%2F1%2Aqyle5bNsvQaeVH1BOEV2sA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Install PHP-FPM
&lt;/h3&gt;

&lt;p&gt;Next we will install php fpm to serve our php application. We’ll create a container using official php-fpm image.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2478%2F1%2AtBMvHo1vmNVLAnSvoq3GPA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2478%2F1%2AtBMvHo1vmNVLAnSvoq3GPA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We don’t need to bind any port from our host machine to the container, nginx will send traffic to php-fpm, we just need to select the php network in network tab.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2418%2F1%2AiMBk3-YUMDOonZCqoG1HVA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2418%2F1%2AiMBk3-YUMDOonZCqoG1HVA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also we need to map our sites directory to the /var/www directory in the container.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2410%2F1%2AoUUX9GcaQLH48ZOIoGX1aw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2410%2F1%2AoUUX9GcaQLH48ZOIoGX1aw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally in Command tabs put /var/www as value in Working Dir field&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2414%2F1%2Ao67Xa35i5hib1OqrYv6i6Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2414%2F1%2Ao67Xa35i5hib1OqrYv6i6Q.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now start the container by hitting start container button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2646%2F1%2ApMM_WxHLiE8mnpVzrTbkNg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2646%2F1%2ApMM_WxHLiE8mnpVzrTbkNg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Add Application
&lt;/h3&gt;

&lt;p&gt;Let’s try to add our first php website. First add a hello.conf file inside nginx-conf directory with below contents&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server {
    listen 80;

    server_name hello.local;

    client_max_body_size 108M;

    access_log /var/log/nginx/hello.access.log;
    error_log /var/log/nginx/hello.error.log;

    root /var/www/hello/public;
    index index.php;

    if (!-e $request_filename) {
        rewrite ^.*$ /index.php last;
    }

    location ~ \.php$ {
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PHP_VALUE "error_log=/var/log/nginx/hello-php.log";
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        include fastcgi_params;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;This file is for routing traffic to php-fpm. Next add a index.php file inside sites/hello/public directory with following contents&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php
phpinfo();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;And finally add a domain for our site in /etc/hosts file&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;127.0.0.1    hello.local
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now visit &lt;a href="http://hello.local" rel="noopener noreferrer"&gt;http://hello.local&lt;/a&gt; and you’ll see&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2644%2F1%2AVGJciA8oO9v10HDGF6aAQQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2644%2F1%2AVGJciA8oO9v10HDGF6aAQQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let’s add another site, the procedure is same. First we add conf file for nginx configuration and then add our code in a directory under sites and finally add a domain for that site in /etc/hosts file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install PHP Extensions
&lt;/h3&gt;

&lt;p&gt;By default only few extensions are installed in the container. If we want we can install more extensions. First let’s connect to the bash terminal of our php container. If you visit the container page you’ll see a console link, click it&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2406%2F1%2AskgNxzuS_2Si_UlyrCbR9A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2406%2F1%2AskgNxzuS_2Si_UlyrCbR9A.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ll see a connect button to connect to the bash, click it and you’ll be at /var/www directory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2642%2F1%2A3t0MU2VcAo_wHjgwZ6z9-g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2642%2F1%2A3t0MU2VcAo_wHjgwZ6z9-g.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let’s install pdo_mysql extension to use mysql pdo driver by following command&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ docker-php-ext-install pdo_mysql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;We’ll also install &lt;code&gt;gd&lt;/code&gt; and &lt;code&gt;ext-zip&lt;/code&gt; extensions&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ &amp;amp;&amp;amp; docker-php-ext-install gd

$ apt-get install libzip-dev &amp;amp;&amp;amp; docker-php-ext-install zip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;You can install other extensions in similar way. After installing any extension restart the container.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install Composer
&lt;/h3&gt;

&lt;p&gt;Before we install composer first install zip &amp;amp; unzip package which’ll be used by composer for laravel installation.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ apt-get update &amp;amp;&amp;amp; apt-get install zip unzip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;And now install composer&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Let’s check composer is installed and in our path&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ composer --version
Composer version 1.4.2 2017-03-10 09:29:45
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  Install Laravel
&lt;/h3&gt;

&lt;p&gt;Lets install our first laravel application by running following command&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ composer create-project --prefer-dist laravel/laravel example
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;It’ll create a new laravel app inside example directory. To make it accessible we have to create a example.conf and add example.local domain in /etc/hosts file. Also we need to change the owner of storage and boostrap folder like below&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ chown -R www-data:www-data storage bootstrap
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now if we visit example.local in the browser we’ll see&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2648%2F1%2A0LLdZWXfbqAz8xUi8PomHA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2648%2F1%2A0LLdZWXfbqAz8xUi8PomHA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Adding another application will be same as before: 1) create a new laravel app inside sites directory, 2) add a new .conf file for that application, 3) add a domain in /etc/hosts 4) change owner of storage and bootstrap folder to www-data .&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;We have one piece of the puzzle still left, that is database. We’ll see in next post how to add any database to our application and persist the data and also some other tools like redis etc. We’ll also see how can we use another php version to test the same application. Stay tuned!&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://dev.to/local-development-environment-with-docker-for-php-2"&gt;Part-2&lt;/a&gt;
&lt;/h4&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>docker</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Moderator/Maintainer needed: Laravel + Vue OSS project</title>
      <dc:creator>Nehal Hasnayeen</dc:creator>
      <pubDate>Sat, 05 Oct 2019 14:15:04 +0000</pubDate>
      <link>https://dev.to/hasnayeen/moderator-maintainer-needed-laravel-vue-oss-project-e9a</link>
      <guid>https://dev.to/hasnayeen/moderator-maintainer-needed-laravel-vue-oss-project-e9a</guid>
      <description>&lt;p&gt;I've an oss project built with Laravel and VueJS that is growing. I decided to break up the project into smaller parts and delegate different parts to interested oss enthusiasts. If anybody is interested please join our discord server &lt;a href="https://discord.gg/4DvTQsc" rel="noopener noreferrer"&gt;here&lt;/a&gt; and reach out.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Hasnayeen" rel="noopener noreferrer"&gt;
        Hasnayeen
      &lt;/a&gt; / &lt;a href="https://github.com/Hasnayeen/invobook" rel="noopener noreferrer"&gt;
        invobook
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Self-hosted app for Time Tracking, Invoice Generation, Project &amp;amp; Client Management, built with Laravel &amp;amp; Filament.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;InvoBook&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Self-hosted app for Time Tracking, Invoice Generation, Project &amp;amp; Client Management, built with Laravel &amp;amp; Filament.&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://github.com/iluminar/invobook/blob/dev/LICENSE" rel="noopener noreferrer"&gt;&lt;img alt="License" src="https://camo.githubusercontent.com/db2b5392784c3d5e12fa08672d8410cccd5d34c049f0300abdadffece650560b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e3f7374796c653d666f722d7468652d6261646765"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/filamentphp/filament/actions" rel="noopener noreferrer"&gt;&lt;img alt="Tests passing" src="https://camo.githubusercontent.com/fa94c16c48798c5a007660004533180f4b079eabd2a4bd3dbad90298d2480dbf/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f54657374732d70617373696e672d677265656e3f7374796c653d666f722d7468652d6261646765266c6f676f3d676974687562"&gt;&lt;/a&gt;
    &lt;a href="https://laravel.com" rel="nofollow noopener noreferrer"&gt;&lt;img alt="Laravel v10.x" src="https://camo.githubusercontent.com/2f7795f1b08e339cb29d418639d6fbc8cb579289f32c0e51278648fb97ff31cd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d7631302e782d4646324432303f7374796c653d666f722d7468652d6261646765266c6f676f3d6c61726176656c"&gt;&lt;/a&gt;
    &lt;a href="https://livewire.laravel.com" rel="nofollow noopener noreferrer"&gt;&lt;img alt="Livewire v3.x" src="https://camo.githubusercontent.com/486c7994a23fa8c36c971a30025bf6fce6b78f7316c7b47b5c335b21718925fc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c697665776972652d76332e782d4642373041393f7374796c653d666f722d7468652d6261646765"&gt;&lt;/a&gt;
    &lt;a href="https://php.net" rel="nofollow noopener noreferrer"&gt;&lt;img alt="PHP 8.1" src="https://camo.githubusercontent.com/a1f58b12c216b53723ff4287eb45bb3464e50afd7f68de60d59b96b8e758f872/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e312d3737374242343f7374796c653d666f722d7468652d6261646765266c6f676f3d706870"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Hire me&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;I'm available for contractual work on this stack (Filament, Laravel, Livewire, AlpineJS, TailwindCSS). Reach me via &lt;a href="https://github.com/Hasnayeen/invobookmailto:searching.nehal@gmail.com" rel="noopener noreferrer"&gt;email&lt;/a&gt; or &lt;a href="https://discordapp.com/users/297318343642447872" rel="nofollow noopener noreferrer"&gt;discord&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;About Invobook&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Invobook is a self-hosted app to manage team/clients, project &amp;amp; tasks, time tracking, create and sending invoice and more. It is build upon Filament and TALL stack.&lt;/p&gt;




&lt;p&gt;
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#installation" rel="noopener noreferrer"&gt;Installation&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#screenshots-top" rel="noopener noreferrer"&gt;Screenshots&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#contributing-top" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#supporting-top" rel="noopener noreferrer"&gt;Supporting&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#credits-top" rel="noopener noreferrer"&gt;Credits&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#license-top" rel="noopener noreferrer"&gt;License&lt;/a&gt;&lt;/b&gt;
&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Clone the repository&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone git@github.com:Hasnayeen/invobook.git&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Set env variables&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;cp .env.example .env&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Install composer packages&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;composer install&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Screenshots &lt;a href="https://github.com/Hasnayeen/invobook#about-invobook" rel="noopener noreferrer"&gt;↑Top&lt;/a&gt;
&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Hasnayeen/invobook"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FHasnayeen%2Finvobook" alt="Dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Contributing &lt;a href="https://github.com/Hasnayeen/invobook#about-invobook" rel="noopener noreferrer"&gt;↑Top&lt;/a&gt;
&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;To contribute join discord server &lt;a href="https://discord.gg/4DvTQsc" rel="nofollow noopener noreferrer"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Supporting &lt;a href="https://github.com/Hasnayeen/invobook#about-invobook" rel="noopener noreferrer"&gt;↑Top&lt;/a&gt;
&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Be a sponsor&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;Invobook is an MIT-licensed open source project with its ongoing development made possible thanks to the support by our amazing backers.&lt;/p&gt;

&lt;p&gt;Support the development of "Invobook" by being a sponsor, reach at &lt;a href="https://github.com/Hasnayeen/invobookmailto:searching.nehal@gmail.com" rel="noopener noreferrer"&gt;searching.nehal@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Professional Support&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;If you need professional…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Hasnayeen/invobook" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>contributorswanted</category>
      <category>laravel</category>
      <category>vue</category>
    </item>
    <item>
      <title>OSS flutter app open to Hacktoberfest contributors</title>
      <dc:creator>Nehal Hasnayeen</dc:creator>
      <pubDate>Mon, 30 Sep 2019 15:12:53 +0000</pubDate>
      <link>https://dev.to/hasnayeen/oss-flutter-app-open-to-hacktoberfest-contributors-345p</link>
      <guid>https://dev.to/hasnayeen/oss-flutter-app-open-to-hacktoberfest-contributors-345p</guid>
      <description>&lt;p&gt;Goodwork is an open sourced project management &amp;amp; collaboration tool built with Laravel and VueJS. Now a mobile app is being built for the web app with flutter.&lt;/p&gt;

&lt;p&gt;A discord server is opened to accommodate easy communication. Join in and ask any questions you might have. &lt;a href="https://discord.gg/4DvTQsc"&gt;Join here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All contributions are welcome and appreciated. Connect in discord and ask how you can contribute or what you want to work on.&lt;/p&gt;

&lt;p&gt;Also experienced flutter dev are welcome to guide the development or take ownership part of the app.&lt;/p&gt;

&lt;p&gt;web app repo:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Hasnayeen"&gt;
        Hasnayeen
      &lt;/a&gt; / &lt;a href="https://github.com/Hasnayeen/invobook"&gt;
        invobook
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Self-hosted app for Time Tracking, Invoice Generation, Project &amp;amp; Client Management, built with Laravel &amp;amp; Filament.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;InvoBook&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Self-hosted app for Time Tracking, Invoice Generation, Project &amp;amp; Client Management, built with Laravel &amp;amp; Filament.&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://github.com/iluminar/invobook/blob/dev/LICENSE"&gt;&lt;img alt="License" src="https://camo.githubusercontent.com/8b9ea124aa62ab482ab9920154d73a2c61dccf0e1ac9abb6a1cff7a1d510c6a3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e3f7374796c653d666f722d7468652d6261646765"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/filamentphp/filament/actions"&gt;&lt;img alt="Tests passing" src="https://camo.githubusercontent.com/d154c3aa5a534ba8179bbd67f3bbe255238138196171abd94f377dada409ea6b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f54657374732d70617373696e672d677265656e3f7374796c653d666f722d7468652d6261646765266c6f676f3d676974687562"&gt;&lt;/a&gt;
    &lt;a href="https://laravel.com" rel="nofollow"&gt;&lt;img alt="Laravel v10.x" src="https://camo.githubusercontent.com/1289fdba6c14ef18e10abb5a129578b15ce04006708a0d99bc62838d929a7fbc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d7631302e782d4646324432303f7374796c653d666f722d7468652d6261646765266c6f676f3d6c61726176656c"&gt;&lt;/a&gt;
    &lt;a href="https://livewire.laravel.com" rel="nofollow"&gt;&lt;img alt="Livewire v3.x" src="https://camo.githubusercontent.com/0874e1ffbf9b3813e3b22f26f27682392a0febbcd6f43e693d791dc227ee8eb7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c697665776972652d76332e782d4642373041393f7374796c653d666f722d7468652d6261646765"&gt;&lt;/a&gt;
    &lt;a href="https://php.net" rel="nofollow"&gt;&lt;img alt="PHP 8.1" src="https://camo.githubusercontent.com/ff31f0c1c22dd5823c3caed66fcc1978f254dc501e074b7304d6f168dee0c56d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e312d3737374242343f7374796c653d666f722d7468652d6261646765266c6f676f3d706870"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Hire me&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;I'm available for contractual work on this stack (Filament, Laravel, Livewire, AlpineJS, TailwindCSS). Reach me via &lt;a href="https://github.com/Hasnayeen/invobookmailto:searching.nehal@gmail.com"&gt;email&lt;/a&gt; or &lt;a href="https://discordapp.com/users/297318343642447872" rel="nofollow"&gt;discord&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;About Invobook&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Invobook is a self-hosted app to manage team/clients, project &amp;amp; tasks, time tracking, create and sending invoice and more. It is build upon Filament and TALL stack.&lt;/p&gt;




&lt;p&gt;
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#installation"&gt;Installation&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#screenshots-top"&gt;Screenshots&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#contributing-top"&gt;Contributing&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#supporting-top"&gt;Supporting&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#credits-top"&gt;Credits&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#license-top"&gt;License&lt;/a&gt;&lt;/b&gt;
&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Clone the repository&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone git@github.com:Hasnayeen/invobook.git&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Set env variables&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;cp .env.example .env&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Install composer packages&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;composer install&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Screenshots &lt;a href="https://github.com/Hasnayeen/invobook#about-invobook"&gt;↑Top&lt;/a&gt;
&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Hasnayeen/invobook"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KCLZeYJf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/Hasnayeen/invobook" alt="Dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Contributing &lt;a href="https://github.com/Hasnayeen/invobook#about-invobook"&gt;↑Top&lt;/a&gt;
&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;To contribute join discord server &lt;a href="https://discord.gg/4DvTQsc" rel="nofollow"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Supporting &lt;a href="https://github.com/Hasnayeen/invobook#about-invobook"&gt;↑Top&lt;/a&gt;
&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Be a sponsor&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;Invobook is an MIT-licensed open source project with its ongoing development made possible thanks to the support by our amazing backers.&lt;/p&gt;

&lt;p&gt;Support the development of "Invobook" by being a sponsor, reach at &lt;a href="https://github.com/Hasnayeen/invobookmailto:searching.nehal@gmail.com"&gt;searching.nehal@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Professional Support&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;If you need professional…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Hasnayeen/invobook"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;mobile app repo:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/iluminar"&gt;
        iluminar
      &lt;/a&gt; / &lt;a href="https://github.com/iluminar/goodwork-mobile"&gt;
        goodwork-mobile
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Android and iOS app for Goodwork web application
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a href="https://discord.gg/4DvTQsc" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/909dd690c04c72c10527756ba01851179cc3fdde568ce4e64b435942e6b84b21/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a6f696e2532306f6e2d646973636f72642d6f72616e6765" alt="Join on discord"&gt;&lt;/a&gt;
&lt;a href="https://goodworkfor.life/register/invite-link/ovCPAFpnwIhrvqUrlvynarP9HVRBC5mH" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/b6c32dee8c94299d01baf39d0ecf22184bacfc426b239ce213cc745e88d90b4c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a6f696e2532306f6e2d676f6f64776f726b2d6f72616e67652e737667" alt="Join on goodwork"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/iluminar/goodwork-mobileassets/images/icon.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3huhwXKn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/iluminar/goodwork-mobileassets/images/icon.png" alt="Goodwork"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;&lt;a href="https://www.usegood.work" rel="nofollow"&gt;Goodwork&lt;/a&gt;&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Goodwork is a self hosted project management and collaboration tool inspired by basecamp. This repo contains source code for Android and iOS app for Goodwork web application.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/iluminar/goodwork"&gt;Repo for web app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;&lt;a href="https://github.com/iluminar/goodwork-mobile#about-goodwork"&gt;Overview&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/iluminar/goodwork-mobile#demo"&gt;Demo&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/iluminar/goodwork-mobile#screenshots-top"&gt;Screenshots&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/iluminar/goodwork-mobile#contributing-top"&gt;Contributing&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/iluminar/goodwork-mobile#supporting-top"&gt;Supporting&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/iluminar/goodwork-mobile#credits-top"&gt;Credits&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/iluminar/goodwork-mobile#license-top"&gt;License&lt;/a&gt;&lt;/b&gt;
&lt;/p&gt;



&lt;h2&gt;
  
  
  About Goodwork
&lt;/h2&gt;

&lt;p&gt;Goodwork is a simple project management and collaboration tool for software teams. It is open source and &lt;a href="https://github.com/iluminar/goodwork/blob/dev/LICENSE"&gt;MIT licensed&lt;/a&gt;. Goodwork is a self-hosted software so no dependency on anyone and only you keep your data.&lt;/p&gt;

&lt;p&gt;Goodwork brings you all the components required for your project to run smoothly in one place so that you have single source of truth. Instead of using a collection of tools or service which makes everything messy and hard to find important details from stuff scattered all over the place, Goodwork organizes everything in a central place where everyone in the company knows what to do…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/iluminar/goodwork-mobile"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>hacktoberfest</category>
      <category>contributorswanted</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What is your biggest frustration about how work is managed at your workplace?</title>
      <dc:creator>Nehal Hasnayeen</dc:creator>
      <pubDate>Sun, 07 Jul 2019 08:18:32 +0000</pubDate>
      <link>https://dev.to/hasnayeen/what-is-your-biggest-frustration-about-how-work-is-managed-at-your-workplace-8l2</link>
      <guid>https://dev.to/hasnayeen/what-is-your-biggest-frustration-about-how-work-is-managed-at-your-workplace-8l2</guid>
      <description>&lt;p&gt;What makes you shake your head on how your manager or team or company manage work/project at your workplace. What things or practices will you change if you get the chance.&lt;/p&gt;

&lt;p&gt;What does your ideal workplace will look like?&lt;/p&gt;

&lt;p&gt;Some of the things that bother me-&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lack of trust on employee&lt;/li&gt;
&lt;li&gt;Not enough transparency on decisions or policies&lt;/li&gt;
&lt;li&gt;Constant interruption. Always be present or response at real time, no opportunity for deep concentrated work.&lt;/li&gt;
&lt;li&gt;Punishing everyone for one individual wrongdoing.&lt;/li&gt;
&lt;li&gt;Unnecessary meetings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please, share your experience and opinions on this matter.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>healthydebate</category>
      <category>management</category>
      <category>workplace</category>
    </item>
    <item>
      <title>How &amp; why to create a roadmap? Is it waste of time?</title>
      <dc:creator>Nehal Hasnayeen</dc:creator>
      <pubDate>Mon, 24 Jun 2019 05:59:08 +0000</pubDate>
      <link>https://dev.to/hasnayeen/how-why-to-create-a-roadmap-is-it-waste-of-time-2o9d</link>
      <guid>https://dev.to/hasnayeen/how-why-to-create-a-roadmap-is-it-waste-of-time-2o9d</guid>
      <description>&lt;p&gt;How do you create a roadmap for the software you're building? What process you follow and what tools do you use? And what exactly do you include in a roadmap? What benefits a roadmap provides?&lt;/p&gt;

&lt;p&gt;I want to create a roadmap for the app I'm building and I want to add the feature of creating a roadmap into the app, so I'm looking for suggestions on how do people solves this problem.&lt;/p&gt;

&lt;p&gt;Btw if anyone interested what I'm building, it's yet another open sourced project management tool.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Hasnayeen" rel="noopener noreferrer"&gt;
        Hasnayeen
      &lt;/a&gt; / &lt;a href="https://github.com/Hasnayeen/invobook" rel="noopener noreferrer"&gt;
        invobook
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Self-hosted app for Time Tracking, Invoice Generation, Project &amp;amp; Client Management, built with Laravel &amp;amp; Filament.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;InvoBook&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Self-hosted app for Time Tracking, Invoice Generation, Project &amp;amp; Client Management, built with Laravel &amp;amp; Filament.&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://github.com/iluminar/invobook/blob/dev/LICENSE" rel="noopener noreferrer"&gt;&lt;img alt="License" src="https://camo.githubusercontent.com/db2b5392784c3d5e12fa08672d8410cccd5d34c049f0300abdadffece650560b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e3f7374796c653d666f722d7468652d6261646765"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/filamentphp/filament/actions" rel="noopener noreferrer"&gt;&lt;img alt="Tests passing" src="https://camo.githubusercontent.com/fa94c16c48798c5a007660004533180f4b079eabd2a4bd3dbad90298d2480dbf/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f54657374732d70617373696e672d677265656e3f7374796c653d666f722d7468652d6261646765266c6f676f3d676974687562"&gt;&lt;/a&gt;
    &lt;a href="https://laravel.com" rel="nofollow noopener noreferrer"&gt;&lt;img alt="Laravel v10.x" src="https://camo.githubusercontent.com/2f7795f1b08e339cb29d418639d6fbc8cb579289f32c0e51278648fb97ff31cd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d7631302e782d4646324432303f7374796c653d666f722d7468652d6261646765266c6f676f3d6c61726176656c"&gt;&lt;/a&gt;
    &lt;a href="https://livewire.laravel.com" rel="nofollow noopener noreferrer"&gt;&lt;img alt="Livewire v3.x" src="https://camo.githubusercontent.com/486c7994a23fa8c36c971a30025bf6fce6b78f7316c7b47b5c335b21718925fc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c697665776972652d76332e782d4642373041393f7374796c653d666f722d7468652d6261646765"&gt;&lt;/a&gt;
    &lt;a href="https://php.net" rel="nofollow noopener noreferrer"&gt;&lt;img alt="PHP 8.1" src="https://camo.githubusercontent.com/a1f58b12c216b53723ff4287eb45bb3464e50afd7f68de60d59b96b8e758f872/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e312d3737374242343f7374796c653d666f722d7468652d6261646765266c6f676f3d706870"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Hire me&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;I'm available for contractual work on this stack (Filament, Laravel, Livewire, AlpineJS, TailwindCSS). Reach me via &lt;a href="https://github.com/Hasnayeen/invobookmailto:searching.nehal@gmail.com" rel="noopener noreferrer"&gt;email&lt;/a&gt; or &lt;a href="https://discordapp.com/users/297318343642447872" rel="nofollow noopener noreferrer"&gt;discord&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;About Invobook&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Invobook is a self-hosted app to manage team/clients, project &amp;amp; tasks, time tracking, create and sending invoice and more. It is build upon Filament and TALL stack.&lt;/p&gt;




&lt;p&gt;
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#installation" rel="noopener noreferrer"&gt;Installation&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#screenshots-top" rel="noopener noreferrer"&gt;Screenshots&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#contributing-top" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#supporting-top" rel="noopener noreferrer"&gt;Supporting&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#credits-top" rel="noopener noreferrer"&gt;Credits&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://github.com/Hasnayeen/invobook#license-top" rel="noopener noreferrer"&gt;License&lt;/a&gt;&lt;/b&gt;
&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Clone the repository&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone git@github.com:Hasnayeen/invobook.git&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Set env variables&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;cp .env.example .env&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Install composer packages&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;composer install&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Screenshots &lt;a href="https://github.com/Hasnayeen/invobook#about-invobook" rel="noopener noreferrer"&gt;↑Top&lt;/a&gt;
&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Hasnayeen/invobook"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FHasnayeen%2Finvobook" alt="Dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Contributing &lt;a href="https://github.com/Hasnayeen/invobook#about-invobook" rel="noopener noreferrer"&gt;↑Top&lt;/a&gt;
&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;To contribute join discord server &lt;a href="https://discord.gg/4DvTQsc" rel="nofollow noopener noreferrer"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Supporting &lt;a href="https://github.com/Hasnayeen/invobook#about-invobook" rel="noopener noreferrer"&gt;↑Top&lt;/a&gt;
&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Be a sponsor&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;Invobook is an MIT-licensed open source project with its ongoing development made possible thanks to the support by our amazing backers.&lt;/p&gt;

&lt;p&gt;Support the development of "Invobook" by being a sponsor, reach at &lt;a href="https://github.com/Hasnayeen/invobookmailto:searching.nehal@gmail.com" rel="noopener noreferrer"&gt;searching.nehal@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Professional Support&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;If you need professional…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Hasnayeen/invobook" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>discuss</category>
      <category>help</category>
      <category>healthydebate</category>
      <category>startup</category>
    </item>
    <item>
      <title>Hacktoberfest: NOS for OSS projects</title>
      <dc:creator>Nehal Hasnayeen</dc:creator>
      <pubDate>Thu, 18 Oct 2018 20:52:55 +0000</pubDate>
      <link>https://dev.to/hasnayeen/hacktoberfest-nos-for-oss-projects-3k00</link>
      <guid>https://dev.to/hasnayeen/hacktoberfest-nos-for-oss-projects-3k00</guid>
      <description>&lt;p&gt;&lt;a href="//hacktoberfest.digitalocean.com"&gt;Hacktoberfest&lt;/a&gt; is a golden opportunity for new developers to get into open source world. Through hacktoberfest many people get introduce to OSS projects and make their first contribution. Hacktoberfest give oss projects new boost during this time. Just like my oss project &lt;a href="https://github.com/iluminar/goodwork"&gt;Goodwork&lt;/a&gt; got some healthy acceleration during this time. But most importantly got help in an area which is not possible without community contribution. Localization for software is one tough task and thanks to hacktoberfest Goodwork is now available in 11 language. Translation and documentation is perfect for new comers to learn about contributing on a oss project.&lt;/p&gt;

&lt;p&gt;If you're late to the hacktoberfest party there are still a lot of &lt;a href="https://github.com/search?q=label:hacktoberfest+state:open+type:issue"&gt;issue&lt;/a&gt; to get started. Goodwork itself has several &lt;a href="https://github.com/iluminar/goodwork/issues?q=is%3Aissue+is%3Aopen+label%3Ahacktoberfest"&gt;issue&lt;/a&gt; tagged with #hacktoberfest and some are translation related. We need translation for Mandarin, Japanese and other languages.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/iluminar/goodwork/issues?q=is%3Aissue+is%3Aopen+label%3Ahacktoberfest"&gt;Issue List&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qF2jUiUG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-6a5bca60a4ebf959a6df7f08217acd07ac2bc285164fae041eacb8a148b1bab9.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/iluminar"&gt;
        iluminar
      &lt;/a&gt; / &lt;a href="https://github.com/iluminar/goodwork"&gt;
        goodwork
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Self hosted project management and collaboration tool powered by Laravel &amp;amp; VueJS
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a href="https://github.com/iluminar/goodwork/blob/dev/LICENSE"&gt;&lt;img src="https://camo.githubusercontent.com/6fd3ea176e47e98e9a8bf8d25c1ea8cab77e652d/687474703a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e737667" alt="License"&gt;&lt;/a&gt;
&lt;a href="https://travis-ci.org/iluminar/goodwork" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/88d1f039c167ab547fdd75158f8e34ba76710e34/68747470733a2f2f7472617669732d63692e6f72672f696c756d696e61722f676f6f64776f726b2e7376673f6272616e63683d646576" alt="Build Status"&gt;&lt;/a&gt;
&lt;a href="https://github.com/iluminar/goodwork"&gt;&lt;img src="https://camo.githubusercontent.com/9bec8f8275f83119a1090686d68a5b5f42766246/68747470733a2f2f706f7365722e707567782e6f72672f696c756d696e61722f676f6f64776f726b2f762f737461626c65" alt="Stable Version"&gt;&lt;/a&gt;
&lt;a href="https://github.com/laravel/laravel"&gt;&lt;img src="https://camo.githubusercontent.com/19b13c435f77964f2d74b0cbedc32e9c352dacce/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d362e302d627269676874677265656e2e7376673f7374796c653d666c6174" alt="Laravel Version"&gt;&lt;/a&gt;
&lt;a href="https://github.com/vuejs/vue"&gt;&lt;img src="https://camo.githubusercontent.com/5139d931986fe4ddf0529912151b7cdefe7ee369/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7675652d322e352e31332d627269676874677265656e2e7376673f7374796c653d666c6174" alt="VueJS Version"&gt;&lt;/a&gt;
&lt;a href="https://codecov.io/gh/iluminar/goodwork" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/fae3fcaf1d0ac7dd6eff2af09e999518c217995c/68747470733a2f2f636f6465636f762e696f2f67682f696c756d696e61722f676f6f64776f726b2f6272616e63682f6d61737465722f67726170682f62616467652e737667" alt="codecov"&gt;&lt;/a&gt;
&lt;a href="https://styleci.io/repos/81873619" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/306a0de025bb62c2f8d9c19e31fd8ed93ce4e903/68747470733a2f2f7374796c6563692e696f2f7265706f732f38313837333631392f736869656c643f6272616e63683d646576267374796c653d666c6174" alt="StyleCI"&gt;&lt;/a&gt;
&lt;a href="https://discord.gg/4DvTQsc" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/324592011461cea16b0bd37fd2a08b42453631c9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a6f696e2532306f6e2d646973636f72642d6f72616e6765" alt="Join on discord"&gt;&lt;/a&gt;
&lt;a href="https://goodworkfor.life/register/invite-link/ovCPAFpnwIhrvqUrlvynarP9HVRBC5mH" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/f5e6475533bd6b2ee2de6b17bbd42ea18e5d3d01/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a6f696e2532306f6e2d676f6f64776f726b2d6f72616e67652e737667" alt="Join on goodwork"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/iluminar/goodwork/master/readme.md/public/logos/logo_square.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--64EMTltv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/iluminar/goodwork/master/readme.md/public/logos/logo_square.png" alt="Goodwork"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Self hosted project management and collaboration tool inspired by basecamp.&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;&lt;a href="https://raw.githubusercontent.com/iluminar/goodwork/master/readme.md/#about-goodwork"&gt;Overview&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://raw.githubusercontent.com/iluminar/goodwork/master/readme.md/#demo"&gt;Demo&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://raw.githubusercontent.com/iluminar/goodwork/master/readme.md/#installation"&gt;Installation&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://raw.githubusercontent.com/iluminar/goodwork/master/readme.md/#screenshots-top"&gt;Screenshots&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://raw.githubusercontent.com/iluminar/goodwork/master/readme.md/#contributing-top"&gt;Contributing&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://raw.githubusercontent.com/iluminar/goodwork/master/readme.md/#supporting-top"&gt;Supporting&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://raw.githubusercontent.com/iluminar/goodwork/master/readme.md/#credits-top"&gt;Credits&lt;/a&gt;&lt;/b&gt;
|
&lt;b&gt;&lt;a href="https://raw.githubusercontent.com/iluminar/goodwork/master/readme.md/#license-top"&gt;License&lt;/a&gt;&lt;/b&gt;
&lt;/p&gt;




&lt;h2&gt;
About Goodwork&lt;/h2&gt;

&lt;p&gt;Goodwork is a simple project management and collaboration tool for software teams. It is open source and &lt;a href="https://github.com/iluminar/goodwork/blob/dev/LICENSE"&gt;MIT licensed&lt;/a&gt;. Goodwork is a self-hosted software (no dependency on anyone else and only you keep your data).&lt;/p&gt;

&lt;p&gt;Goodwork brings you all the components required for your project to run smoothly in one place so that you have single source of truth. Instead of using a collection of tools or service which makes everything messy with important details being hard to find because stuff is scattered all over the place, Goodwork organizes everything in a central place where everyone in the company knows what to do, knows where things stand and where to find stuff without having to ask around.&lt;/p&gt;


&lt;blockquote&gt;

&lt;p&gt;Goodwork is available in 23…&lt;/p&gt;


&lt;/blockquote&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/iluminar/goodwork"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Photo Credit: Oscar Sutton on Unsplash&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>beginnerfriendly</category>
    </item>
  </channel>
</rss>
