<?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: Adrian Chong</title>
    <description>The latest articles on DEV Community by Adrian Chong (@adrianchong).</description>
    <link>https://dev.to/adrianchong</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%2F65152%2Fecb46200-03fb-40b7-bad7-79670d6fb399.jpg</url>
      <title>DEV Community: Adrian Chong</title>
      <link>https://dev.to/adrianchong</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adrianchong"/>
    <language>en</language>
    <item>
      <title>Timer Application for Multiple Events by using Appwrite as Backend</title>
      <dc:creator>Adrian Chong</dc:creator>
      <pubDate>Tue, 10 May 2022 22:26:10 +0000</pubDate>
      <link>https://dev.to/adrianchong/timer-application-for-multiple-events-by-using-appwrite-as-backend-3hoj</link>
      <guid>https://dev.to/adrianchong/timer-application-for-multiple-events-by-using-appwrite-as-backend-3hoj</guid>
      <description>&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;Over time, the timer feature has become essential to many applications, this project will acts as a startup template for those applications.&lt;/p&gt;

&lt;p&gt;This project only has one page and it is the timer page. User can add and delete timer for their events.&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Web2 Wizards&lt;/p&gt;

&lt;h3&gt;
  
  
  Link to Code
&lt;/h3&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--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/phonist"&gt;
        phonist
      &lt;/a&gt; / &lt;a href="https://github.com/phonist/close_count"&gt;
        close_count
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Timer made with mern stack
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;br&gt;
&lt;div&gt;
  &lt;a href="https://github.com/phonist/close_count"&gt;
    &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GKBpmu4S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/phonist/close_count/raw/master/client/public/favicon.png%3Fraw%3Dtrue" alt="Logo" width="80" height="80"&gt;
  &lt;/a&gt;
&lt;h3&gt;
Timer Application (Close Count)&lt;/h3&gt;
  &lt;p&gt;
    User can create multiple timers for their events
  &lt;/p&gt;
&lt;/div&gt;
&lt;h2&gt;
About The Project&lt;/h2&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/phonist/close_count/blob/master/client/public/assets/TimerPage.png?raw=true"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X2tiJwJC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/phonist/close_count/raw/master/client/public/assets/TimerPage.png%3Fraw%3Dtrue" alt="Timer"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The project acts as a startup template for timer application.&lt;/p&gt;
&lt;p&gt;This project only has one page and it is the timer page.
User can add and delete timer for their events.&lt;/p&gt;
&lt;h3&gt;
Built With&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.mongodb.com/" rel="nofollow"&gt;MongoDB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://expressjs.com/" rel="nofollow"&gt;Express&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjs.org/" rel="nofollow"&gt;React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nodejs.org/en/" rel="nofollow"&gt;Node&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
Getting Started&lt;/h2&gt;
&lt;p&gt;This project was developed under Docker environment. So please make sure Docker is installed.
To configure the docker environment. Please check docker-compose.yml and Dockerfile.
The project is using MERN stack.&lt;/p&gt;
&lt;p&gt;After project setup is done, please open your browser, navigate to localhost:3000.
Register and login to the application to start creating your timers.&lt;/p&gt;
&lt;h3&gt;
Prerequisites&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;NodeJs&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Installation&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;git clone &lt;a href="https://github.com/phonist/close_count.git"&gt;https://github.com/phonist/close_count.git&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;cd close_count&lt;/li&gt;
&lt;li&gt;docker-compose up -d --build&lt;/li&gt;
&lt;li&gt;navigate to localhost:3000 and start your development&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
Contributing&lt;/h2&gt;
&lt;p&gt;Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you…&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/phonist/close_count"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>appwritehack</category>
    </item>
    <item>
      <title>ReadtyMap - Speak to Google Maps to find your location.</title>
      <dc:creator>Adrian Chong</dc:creator>
      <pubDate>Sun, 10 Apr 2022 17:42:04 +0000</pubDate>
      <link>https://dev.to/adrianchong/readtymap-speak-to-google-maps-to-find-your-location-1cbd</link>
      <guid>https://dev.to/adrianchong/readtymap-speak-to-google-maps-to-find-your-location-1cbd</guid>
      <description>&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W-WUFnBP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/phonist/readtymap/blob/master/public/assets/readtymap.png%3Fraw%3Dtrue" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W-WUFnBP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/phonist/readtymap/blob/master/public/assets/readtymap.png%3Fraw%3Dtrue" alt="ReadtyMap" width="880" height="693"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ReadtyMap is a tool that can search for a location by voice, as well as by typing and searching. Deepgram and Google Maps are the technologies being used here.&lt;/p&gt;

&lt;p&gt;Sometimes people are just lazy when it comes to typing. People frequently use Google Maps to find the location in many everyday situations. Despite the fact that there are many similar apps available, it is still worthwhile to create a simple one.&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Wacky Wildcards&lt;/p&gt;

&lt;h3&gt;
  
  
  Link to Code on GitHub
&lt;/h3&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--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/phonist"&gt;
        phonist
      &lt;/a&gt; / &lt;a href="https://github.com/phonist/readtymap"&gt;
        readtymap
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Search location by voice
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;br&gt;
&lt;div&gt;
  &lt;a href="https://github.com/phonist/readtymap"&gt;
    &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LPanyq----/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/phonist/readtymap/raw/master/public/favicon.ico%3Fraw%3Dtrue" alt="Logo" width="80" height="80"&gt;
  &lt;/a&gt;
&lt;h3&gt;
ReadtyMap&lt;/h3&gt;
  &lt;p&gt;
    ReadtyMap is a tool that can search for a location by voice, as well as by typing and searching
    Deepgram and Google Maps are the technologies being used here
  &lt;/p&gt;
&lt;/div&gt;

&lt;h2&gt;
About The Project&lt;/h2&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/phonist/readtymap/blob/master/public/assets/readtymap.png?raw=true"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Lz0TT7qi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/phonist/readtymap/raw/master/public/assets/readtymap.png%3Fraw%3Dtrue" alt="ReadtyMap"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Sometimes people are just lazy when it comes to typing.
People frequently use Google Maps to find the location in many everyday situations.
Despite the fact that there are many similar apps available, it is still worthwhile to create a simple one.&lt;/p&gt;
&lt;h3&gt;
Build With&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://deepgram.com/" rel="nofollow"&gt;Deepgram&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/maps/documentation/javascript/get-api-key" rel="nofollow"&gt;Google Maps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjs.org/" rel="nofollow"&gt;React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/docs/basic-features/typescript" rel="nofollow"&gt;NextJs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.typescriptlang.org/" rel="nofollow"&gt;Typescript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://redux.js.org/" rel="nofollow"&gt;Redux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/reduxjs/redux-thunk"&gt;Redux-thunk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mui.com/" rel="nofollow"&gt;Material-UI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
Getting Started&lt;/h2&gt;
&lt;h3&gt;
Use Voice&lt;/h3&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/phonist/readtymap/blob/master/public/assets/searchbar.png?raw=true"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IamoYtXd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/phonist/readtymap/raw/master/public/assets/searchbar.png%3Fraw%3Dtrue" alt="Search Bar"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click on the microphone icon.&lt;/li&gt;
&lt;li&gt;Start speaking when page showing 'Listening'.&lt;/li&gt;
&lt;li&gt;Stop speaking when page shows 'Searching'.&lt;/li&gt;
&lt;li&gt;ReadtyMap will show the location.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
Development&lt;/h3&gt;
&lt;p&gt;The majority of the time, development takes place in &lt;code&gt;src/components/Map/&lt;/code&gt;, where the keys feature is used.&lt;/p&gt;
&lt;p&gt;The deepgram.ts in &lt;code&gt;pages/api/deepgram.ts&lt;/code&gt; is used for the speech to text feature, which is called by function in &lt;code&gt;src/components/Map/Autocomplete.tsx&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;…&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/phonist/readtymap"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Node - 16.2.0&lt;/li&gt;
&lt;li&gt;Yarn - 1.22.17&lt;/li&gt;
&lt;li&gt;Deepgram acount&lt;/li&gt;
&lt;li&gt;Google Maps API key&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;git clone &lt;a href="https://github.com/phonist/readtymap"&gt;https://github.com/phonist/readtymap&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;cd readtymap&lt;/li&gt;
&lt;li&gt;create .env file at root directory and assign value to these keys:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NEXT_PUBLIC_GOOGLE_API_KEY_MAPS=&amp;lt;your google maps api key&amp;gt;
NEXT_PUBLIC_DEEPGRAM_API_KEY=&amp;lt;your deepgram api key&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;yarn dev&lt;/li&gt;
&lt;li&gt;navigate to localhost:3000 and start your development&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Use Voice
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZgpJd5fN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/phonist/readtymap/blob/master/public/assets/searchbar.png%3Fraw%3Dtrue" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZgpJd5fN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/phonist/readtymap/blob/master/public/assets/searchbar.png%3Fraw%3Dtrue" alt="Search Bar" width="465" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on the microphone icon.&lt;/li&gt;
&lt;li&gt;Start speaking when page showing 'Listening'.&lt;/li&gt;
&lt;li&gt;Stop speaking when page shows 'Searching'.&lt;/li&gt;
&lt;li&gt;ReadtyMap will show the location.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Development
&lt;/h3&gt;

&lt;p&gt;The majority of the time, development takes place in &lt;code&gt;src/components/Map/&lt;/code&gt;, where the keys feature is used.&lt;/p&gt;

&lt;p&gt;The deepgram.ts in &lt;code&gt;pages/api/deepgram.ts&lt;/code&gt; is used for the speech to text feature, which is called by function in &lt;code&gt;src/components/Map/Autocomplete.tsx&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Meanwhile, the Google Maps API is used for the map feature, which is called by function in &lt;code&gt;src/components/Map/GoogleMap.tsx&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The project structure are depicts below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pages/
|-- api/
  |-- deepgram.ts
|-- index.tsx
|-- _app.tsx
|-- Map.tsx
redux/
|-- reducers/
|-- actions/
|-- thunks/
|-- types/
      |-- interfaces/
|-- reducers.ts
|-- store.ts
src/
|-- components/
  |-- Map/
    |-- Autocomplete.tsx
    |-- GoogleMap.tsx
    |-- Pointer.tsx
|-- Listening.tsx
|-- Loading.tsx
|-- Searching.tsx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Deepgram.ts is Deepgram's API interface. &lt;/li&gt;
&lt;li&gt;All UI components are stored in the &lt;code&gt;src&lt;/code&gt; folder. &lt;/li&gt;
&lt;li&gt;All redux logic is stored in the &lt;code&gt;redux&lt;/code&gt; folder. &lt;/li&gt;
&lt;li&gt;All typescript interfaces are kept in the folders &lt;code&gt;types&lt;/code&gt; and &lt;code&gt;types/interfaces.&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The project is host on &lt;a href="https://readtymap.vercel.app/"&gt;readtymap&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first thing that came to mind when I saw that Dev + Deepgram was hosting a hackathon was what I could do with the speech to text API.&lt;/p&gt;

&lt;p&gt;Despite the fact that there are numerous similar apps, the first idea that comes to mind is to use voice to search for locations, creating a simple one is still worthwhile.&lt;/p&gt;

&lt;p&gt;Developers who want to learn more about Deepgram's speech to text feature can use ReadtyMap as a starting point.&lt;br&gt;
Thank you for providing this platform for us to explore additional software possibilities, Deepgram. :D&lt;/p&gt;

</description>
      <category>hackwithdg</category>
      <category>deepgram</category>
      <category>voicesearch</category>
      <category>googlemap</category>
    </item>
    <item>
      <title>Make a TIC-TAC-TOE by using NextJs, React and Redux with Typescript</title>
      <dc:creator>Adrian Chong</dc:creator>
      <pubDate>Sat, 09 Apr 2022 06:38:33 +0000</pubDate>
      <link>https://dev.to/adrianchong/make-a-tic-tac-toe-by-using-nextjs-react-and-redux-with-typescript-1no6</link>
      <guid>https://dev.to/adrianchong/make-a-tic-tac-toe-by-using-nextjs-react-and-redux-with-typescript-1no6</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dmUblnko--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/phonist/tictactoe/blob/main/public/assets/gameboard.png%3Fraw%3Dtrue" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dmUblnko--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/phonist/tictactoe/blob/main/public/assets/gameboard.png%3Fraw%3Dtrue" alt="Tic Tac Toe" width="880" height="468"&gt;&lt;/a&gt;&lt;br&gt;
Demo link: &lt;a href="https://tictactoe-hu2mk80qr-phonist.vercel.app/"&gt;https://tictactoe-hu2mk80qr-phonist.vercel.app/&lt;/a&gt;&lt;br&gt;
GitHub repo: &lt;a href="https://github.com/phonist/tictactoe"&gt;https://github.com/phonist/tictactoe&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  About The Project
&lt;/h2&gt;

&lt;p&gt;This is a straightforward Tic Tac Toe game.&lt;br&gt;
The game is build using NextJs on top of React with Typescript.&lt;br&gt;
Then there's redux, redux-thunk, and material-UI.&lt;/p&gt;
&lt;h3&gt;
  
  
  Build With
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://reactjs.org/"&gt;React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/docs/basic-features/typescript"&gt;NextJs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.typescriptlang.org/"&gt;Typescript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://redux.js.org/"&gt;Redux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/reduxjs/redux-thunk"&gt;Redux-thunk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mui.com/"&gt;Material-UI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;The project are mainly categorize into three parts (UI, redux logic and typescript interface):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pages
|-- index.tsx
|-- _app.tsx
|-- Board.tsx
|-- Game.tsx
|-- Square.tsx
redux
|-- reducers
|-- actions
|-- thunks
|-- types
      |-- interfaces
|-- reducers.ts
|-- store.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;All UI components are kept in the &lt;code&gt;pages&lt;/code&gt; folder..&lt;/li&gt;
&lt;li&gt;All redux logic are kept inside &lt;code&gt;redux&lt;/code&gt; folder.&lt;/li&gt;
&lt;li&gt;All typescript interfaces are kept inside &lt;code&gt;types&lt;/code&gt; and &lt;code&gt;types/interfaces&lt;/code&gt; folder.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Node - 16.2.0&lt;/li&gt;
&lt;li&gt;Yarn - 1.22.17&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;git clone &lt;a href="https://github.com/phonist/tictactoe.git"&gt;https://github.com/phonist/tictactoe.git&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;cd tictactoe&lt;/li&gt;
&lt;li&gt;yarn dev&lt;/li&gt;
&lt;li&gt;navigate to localhost:3000 and start your development&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>nextjs</category>
      <category>react</category>
      <category>redux</category>
    </item>
    <item>
      <title>Office Management System</title>
      <dc:creator>Adrian Chong</dc:creator>
      <pubDate>Tue, 08 Mar 2022 15:50:07 +0000</pubDate>
      <link>https://dev.to/adrianchong/office-management-system-4308</link>
      <guid>https://dev.to/adrianchong/office-management-system-4308</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/phonist/Office-Management-System" rel="noopener noreferrer"&gt;&lt;br&gt;
  &lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Office Management System&lt;/h3&gt;


&lt;p&gt;&lt;br&gt;
    Various features that are required for office management system.&lt;br&gt;
  &lt;/p&gt;

&lt;h2&gt;
  
  
  About The Project
&lt;/h2&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%2Fraw.githubusercontent.com%2Fphonist%2FOffice-Management-System%2Fmaster%2Fpublic%2Fassets%2FDashboard.png%3Fraw%3Dtrue" 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%2Fraw.githubusercontent.com%2Fphonist%2FOffice-Management-System%2Fmaster%2Fpublic%2Fassets%2FDashboard.png%3Fraw%3Dtrue" alt="Dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project acts as a startup template for an office management system.&lt;/p&gt;

&lt;p&gt;Dashboard summarizes and visualizes some information of the system. Meanwhile, it also provides a way to access its corresponding feature.&lt;/p&gt;

&lt;p&gt;Apart from the dashboard, users can create an account by Facebook, Google, Github or by using their own email address.&lt;/p&gt;

&lt;p&gt;To let users create accounts on Facebook, Google, Github,&lt;/p&gt;

&lt;p&gt;A developer has to make sure a third-party API is working properly by assigning the correct API key in .env file.&lt;/p&gt;

&lt;p&gt;The key to Facebook, Google, and Github is listed in .env file as below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FACEBOOK_CLIENT_ID=
FACEBOOK_CLIENT_SECRET=
FACEBOOK_REDIRECT_URL=

GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_REDIRECT_URL=

GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GITHUB_REDIRECT_URL=
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Built With
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://laravel.com" rel="noopener noreferrer"&gt;Laravel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://getbootstrap.com" rel="noopener noreferrer"&gt;Bootstrap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jquery.com" rel="noopener noreferrer"&gt;JQuery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;This project was developed under Docker environment. So please make sure Docker is installed.&lt;br&gt;
To configure the docker environment. Please check docker-compose.yml and Dockerfile.&lt;br&gt;
The project is using LEMP stack.&lt;/p&gt;

&lt;p&gt;After project setup is done, please open your browser, navigate to localhost:80 and login with default credentials.&lt;/p&gt;

&lt;p&gt;&lt;a href="mailto:admin@byteoffice.com"&gt;admin@byteoffice.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;password: 123qwe&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Composer&lt;/li&gt;
&lt;li&gt;NodeJS (optional) for Yarn&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;git clone &lt;a href="https://github.com/phonist/Office-Management-System.git" rel="noopener noreferrer"&gt;https://github.com/phonist/Office-Management-System.git&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;composer install&lt;/li&gt;
&lt;li&gt;yarn install&lt;/li&gt;
&lt;li&gt;docker-compose up -d --build&lt;/li&gt;
&lt;li&gt;&lt;p&gt;cp .env.example .env&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;change the .env file to your own database credentials&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;e.g
DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432
DB_DATABASE=oms
DB_USERNAME=postgres
DB_PASSWORD=postgres
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;docker exec oms_app php artisan key:generate&lt;/li&gt;
&lt;li&gt;docker exec oms_app php artisan migrate --seed&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;The overall features or modules in this projecet are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Client
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fphonist%2FOffice-Management-System%2Fmaster%2Fpublic%2Fassets%2FClient.png" alt="Client"&gt;
&lt;/li&gt;
&lt;li&gt;Vendor
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fphonist%2FOffice-Management-System%2Fmaster%2Fpublic%2Fassets%2FVendor.png" alt="Vendor"&gt;
&lt;/li&gt;
&lt;li&gt;Invoice
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fphonist%2FOffice-Management-System%2Fmaster%2Fpublic%2Fassets%2FInvoice.png" alt="Invoice"&gt;
&lt;/li&gt;
&lt;li&gt;Quotation 
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fphonist%2FOffice-Management-System%2Fmaster%2Fpublic%2Fassets%2FQuotation.png" alt="Quotation"&gt;
&lt;/li&gt;
&lt;li&gt;Purchase
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fphonist%2FOffice-Management-System%2Fmaster%2Fpublic%2Fassets%2FPurchase.png" alt="Purchase"&gt;
&lt;/li&gt;
&lt;li&gt;Product
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fphonist%2FOffice-Management-System%2Fmaster%2Fpublic%2Fassets%2FProduct.png" alt="Product"&gt;
&lt;/li&gt;
&lt;li&gt;Employee
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fphonist%2FOffice-Management-System%2Fmaster%2Fpublic%2Fassets%2FEmployee.png" alt="Employee"&gt;
&lt;/li&gt;
&lt;li&gt;Office Settings
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fphonist%2FOffice-Management-System%2Fmaster%2Fpublic%2Fassets%2FOffice.png" alt="Office Settings"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Roadmap
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[x] Client&lt;/li&gt;
&lt;li&gt;[x] Vendor&lt;/li&gt;
&lt;li&gt;[x] Sales

&lt;ul&gt;
&lt;li&gt;[x] Create Invoice&lt;/li&gt;
&lt;li&gt;[x] All Invoice&lt;/li&gt;
&lt;li&gt;[x] Processing Order&lt;/li&gt;
&lt;li&gt;[x] Pending Shipment&lt;/li&gt;
&lt;li&gt;[x] Delivered Order&lt;/li&gt;
&lt;li&gt;[x] Quotation&lt;/li&gt;
&lt;li&gt;[x] All Quotation&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;[x] Purchase

&lt;ul&gt;
&lt;li&gt;[x] New Purchase&lt;/li&gt;
&lt;li&gt;[x] Purchase List&lt;/li&gt;
&lt;li&gt;[x] Received Product&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;[x] Product and Services

&lt;ul&gt;
&lt;li&gt;[x] Product List&lt;/li&gt;
&lt;li&gt;[x] Import Product&lt;/li&gt;
&lt;li&gt;[x] Category&lt;/li&gt;
&lt;li&gt;[x] Withdrawal&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;[x] Employee

&lt;ul&gt;
&lt;li&gt;[x] Add Employee&lt;/li&gt;
&lt;li&gt;[x] Import Employee&lt;/li&gt;
&lt;li&gt;[x] Employee Employee&lt;/li&gt;
&lt;li&gt;[x] Terminated Employee&lt;/li&gt;
&lt;li&gt;[x] Employee Award&lt;/li&gt;
&lt;li&gt;[x] Set Attendance&lt;/li&gt;
&lt;li&gt;[x] Import Attendance&lt;/li&gt;
&lt;li&gt;[x] Attendance Report&lt;/li&gt;
&lt;li&gt;[x] Application List&lt;/li&gt;
&lt;li&gt;[x] Reimbursement&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;[x] Office Settings

&lt;ul&gt;
&lt;li&gt;[x] Department&lt;/li&gt;
&lt;li&gt;[x] Job Titles&lt;/li&gt;
&lt;li&gt;[x] Job Categories&lt;/li&gt;
&lt;li&gt;[x] Work Shifts&lt;/li&gt;
&lt;li&gt;[x] Working Days&lt;/li&gt;
&lt;li&gt;[x] Holiday List&lt;/li&gt;
&lt;li&gt;[x] Leave Type&lt;/li&gt;
&lt;li&gt;[x] Pay Grades&lt;/li&gt;
&lt;li&gt;[x] Salary Component&lt;/li&gt;
&lt;li&gt;[x] Employement Status&lt;/li&gt;
&lt;li&gt;[x] Tax&lt;/li&gt;
&lt;li&gt;[x] Role&lt;/li&gt;
&lt;li&gt;[ ] Permission&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Contributing
&lt;/h2&gt;

&lt;p&gt;Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are &lt;strong&gt;greatly appreciated&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement" or "bug".&lt;br&gt;
Don't forget to give the project a star! Thanks again!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fork the Project&lt;/li&gt;
&lt;li&gt;Create your Feature Branch (&lt;code&gt;git checkout -b feature/&amp;lt;featureName&amp;gt;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Commit your Changes (&lt;code&gt;git commit -m 'add &amp;lt;featurename&amp;gt;'&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Push to the Branch (&lt;code&gt;git push origin feature/&amp;lt;featureName&amp;gt;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Open a Pull Request&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;Distributed under the MIT License. See &lt;code&gt;LICENSE.txt&lt;/code&gt; for more information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contact
&lt;/h2&gt;

&lt;p&gt;Adrian Chong - &lt;a href="https://twitter.com/AdrianC50883820" rel="noopener noreferrer"&gt;@twitter_handle&lt;/a&gt; - &lt;a href="mailto:rujyi94@hotmail.com"&gt;rujyi94@hotmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Project Link: &lt;a href="https://github.com/phonist/Office-Management-System" rel="noopener noreferrer"&gt;https://github.com/phonist/Office-Management-System&lt;/a&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>docker</category>
      <category>github</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Setup MERN by GitHub Actions</title>
      <dc:creator>Adrian Chong</dc:creator>
      <pubDate>Tue, 07 Dec 2021 02:55:21 +0000</pubDate>
      <link>https://dev.to/adrianchong/setup-mern-by-github-actions-4dmh</link>
      <guid>https://dev.to/adrianchong/setup-mern-by-github-actions-4dmh</guid>
      <description>&lt;p&gt;Dependencies are frequently dealt with in typical MERN stack applications.&lt;br&gt;
This workflow aims to install dependencies on the server and client sides automatically based on package.json. &lt;/p&gt;
&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/phonist/close_count"&gt;Close Count GitHub&lt;/a&gt;&lt;br&gt;
Close Count is an example project in which end users can create multiple timers for their events.&lt;/p&gt;

&lt;p&gt;There are two major folders: server and client.&lt;/p&gt;

&lt;p&gt;As stated in the title, the project is built on top of MERN.&lt;/p&gt;

&lt;p&gt;Install dependencies for each server and client side package by package.json&lt;/p&gt;
&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Wacky Wildcards&lt;/p&gt;
&lt;h3&gt;
  
  
  Yaml File
&lt;/h3&gt;

&lt;p&gt;When changes are pushed to the master branch, the actions will be triggered. In fact, the master branch serves as the production deployment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: Production script

on:
  push:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-20.04

    steps:
      - uses: actions/checkout@v2
      - name: Install Nodejs and NPM
        run: |
          curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
          sudo apt install nodejs
      - name: Install nodejs, npm and yarn
        run: |
          curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg
          sudo apt-key add -echo "deb https://dl.yarnpkg.com/debian/ stable main" 
          sudo tee /etc/apt/sources.list.d/yarn.list
          sudo apt update &amp;amp;&amp;amp; sudo apt install yarn
          echo nodejs version
          node -v
          echo npm version
          npm -v
          echo yarn version
          yarn -v
  server:
    needs: build
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v2
      - name: Install server dependencies
        working-directory: ./server
        run: |
          yarn install
  client:
    needs: build
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v2
      - name: Install client dependencies
        working-directory: ./client
        run: |
          yarn install     

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ubuntu-20.04 was chosen as the operating system for the workflow.&lt;br&gt;
First, install the YARN package manager.&lt;br&gt;
After that, run yarn install in both the server and client folders to install all required dependencies.&lt;/p&gt;

</description>
      <category>actionshackathon21</category>
      <category>github</category>
      <category>opensource</category>
      <category>deployment</category>
    </item>
  </channel>
</rss>
