diff --git a/main.yaml b/main.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b5a33035c89c9b57c43de8537eb69a56b0af820f
--- /dev/null
+++ b/main.yaml
@@ -0,0 +1,237 @@
+---
+- name: check if packages exits
+  package_facts:
+    manager: auto
+
+- name: 'install all the dependencies '
+  tags: always
+  become: yes
+  apt:
+      name: ['nodejs','npm']
+      state: latest
+      install_recommends: no
+      update_cache: yes
+- debug: 
+    msg: "node and npm installed"
+
+- name: make sure the latest npm is installed
+  tags: 'node'
+  become: yes
+  npm:
+    name: npm
+    global: yes
+    state: latest
+
+- name: install pm2 server
+  tags: 'pm2'
+  become: yes
+  npm:
+    name: pm2
+    global: yes
+    state: latest
+
+
+- name: install react
+  tags: 'react'
+  become: yes
+  npm:
+    name: create-react-app
+    global: yes
+    state: present
+
+- name: Checking folders
+  tags: 'volumes'
+  become: yes
+  stat:
+    path: "{{ item.mountpoint }}"
+  register: directory_stats
+  with_items:
+    - "{{ volumes }}"
+
+- name: Create directory
+  tags: 'volumes'
+  become: yes
+  file:
+    path: "{{ item.item.mountpoint }}"
+    recurse: yes
+    state: directory
+  when: item.stat.exists == false
+  with_items:
+    - "{{ directory_stats.results }}"
+
+- name: Mount device
+  tags: 'volumes'
+  become: yes
+  mount:
+    path: "{{ item.mountpoint }}"
+    src: "{{ item.device }}"
+    fstype: xfs
+    state: mounted
+  when: item.device is defined
+  with_items:
+    - "{{ volumes }}"
+  
+- name: traverse into the project directory.
+  become: yes
+  shell: cd
+  args:
+    chdir: /var/lib/react
+  register: dir_changed
+
+- name: clone git repo
+  become: yes
+  git:
+    repo: https://github.com/advait22/react-server.git
+    dest: /var/lib/react
+    force: yes
+- debug:
+    msg: 'git repo cloned'
+  when: dir_changed.rc == 0 
+
+- name: change working directory to the app
+  become: yes
+  shell: cd
+  args:
+    chdir: /var/lib/react/express_react_example
+  register: server
+
+- name: install all the packages for server
+  become: yes
+  npm:
+    path: /var/lib/react/express_react_example/
+    name: install
+- debug: 
+    msg: 'inside server'
+  when: server.rc == 0 
+
+- name: install dependencies
+  become: yes
+  command: npm install --save express
+- debug:
+    msg: 'Client express installed'
+  when: server.rc == 0
+
+- name: change working directory to the client
+  become: yes
+  shell: cd
+  args:
+    chdir: /var/lib/react/express_react_example/client
+  register: client
+
+- name: install dependencies
+  become: yes
+  npm:
+    path: /var/lib/react/express_react_example/client
+    name: install
+- debug:
+    msg: 'Client Dependencies installed'
+  when: client.rc == 0
+
+
+- name: Ansible check directory exists build in client.
+  stat:
+    path: /var/lib/react/express_react_example/client/build
+  register: files_to_delete
+
+- name: delete previous build folder
+  become: yes
+  shell: rm -rf build
+  args:
+    chdir: /var/lib/react/express_react_example/client/
+  register: build_delete
+- debug:
+    msg: "build deleted"
+  when: files_to_delete.stat.exists == true
+
+  ###workaround for react js bug in build command
+
+  
+- name: delete dependencies on client
+  become: yes
+  shell: rm -rf node_modules
+  args:
+    chdir: /var/lib/react/express_react_example/client/
+  register: deleted_modules
+- debug:
+    msg: 'Client Dependencies delete'
+
+- name: clear npm cache
+  tags: 'clear cache'
+  become: yes
+  shell: npm cache clean --force
+  args:
+    chdir: /var/lib/react/express_react_example/client
+  register: cache_cleaned
+  when: deleted_modules.rc == 0
+
+- name: install dependencies
+  become: yes
+  npm:
+    path: /var/lib/react/express_react_example/client
+    name: install
+- debug:
+    msg: 'Client Dependencies installed'
+  when: cache_cleaned.rc == 0
+
+- name: install react scripts
+  tags: 'react scripts'
+  become: yes
+  shell: npm install --save react-scripts@3.0.1 react react-dom
+  args:
+    chdir: /var/lib/react/express_react_example/client
+  register: react_scripts
+  when: cache_cleaned.rc == 0
+  
+#################################################################
+
+- name : compile the new build
+  tags: build
+  become: yes
+  shell: npm run build
+  args:
+    chdir: /var/lib/react/express_react_example/client
+- debug:
+    msg: 'new build successfull'
+
+- name: Ansible check directory exists build in server.
+  stat:
+    path: /var/lib/react/express_react_example/build
+  register: files_to_delete_from_server
+
+
+- name: delete previous build folder in server
+  become: yes
+  shell: rm -rf build
+  args:
+    chdir: /var/lib/react/express_react_example/
+  register: build_delete_server
+- debug:
+    msg: "deleting old build from server"
+  when: files_to_delete_from_server.stat.exists == true
+
+- name: copy new build to parent folder
+  become: yes
+  command: mv /var/lib/react/express_react_example/client/build /var/lib/react/express_react_example
+  register: build_copy
+- debug:
+    msg: 'build copied'
+  when: build_delete_server.rc == 0
+
+- name: stop all the running server
+  become: yes
+  command: pm2 stop all
+  register: stop_server
+- debug: 
+    msg: 'all servers stopped'
+#   when: build_copy.rc == 0
+
+
+- name: start the server
+  become: yes
+  # command: node /var/lib/react/express_react_example/server.js &
+  command: pm2 start /var/lib/react/express_react_example/server.js
+- debug: 
+    msg: 'yayyyyyyyyyyy app is running'
+  # when: stop_server.rc == 0
+  
+  
\ No newline at end of file