├── .browserslistrc
├── .eslintrc.js
├── .gitignore
├── README.md
├── babel.config.js
├── package-lock.json
├── package.json
├── postcss.config.js
├── public
├── favicon.ico
└── index.html
├── src
├── App.vue
├── assets
│ ├── logo.png
│ ├── tailwind.css
│ └── whatsapp_background.png
├── components
│ ├── chats
│ │ ├── Header.vue
│ │ └── Lists.vue
│ └── messages
│ │ └── Header.vue
├── main.js
├── router
│ └── index.js
└── views
│ ├── Calls.vue
│ ├── Chats.vue
│ ├── Contacts.vue
│ └── Messages.vue
└── tailwind.config.js
/.browserslistrc:
--------------------------------------------------------------------------------
1 | > 1%
2 | last 2 versions
3 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | node: true
5 | },
6 | extends: ["plugin:vue/essential", "eslint:recommended", "@vue/prettier"],
7 | parserOptions: {
8 | parser: "babel-eslint"
9 | },
10 | rules: {
11 | "no-console": process.env.NODE_ENV === "production" ? "error" : "off",
12 | "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off"
13 | }
14 | };
15 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 |
14 | # Editor directories and files
15 | .idea
16 | .vscode
17 | *.suo
18 | *.ntvs*
19 | *.njsproj
20 | *.sln
21 | *.sw?
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # whatsapp-clone
2 |
3 | ## Project setup
4 | ```
5 | npm install
6 | ```
7 |
8 | ### Compiles and hot-reloads for development
9 | ```
10 | npm run serve
11 | ```
12 |
13 | ### Compiles and minifies for production
14 | ```
15 | npm run build
16 | ```
17 |
18 | ### Lints and fixes files
19 | ```
20 | npm run lint
21 | ```
22 |
23 | ### Customize configuration
24 | See [Configuration Reference](https://cli.vuejs.org/config/).
25 |
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: ["@vue/cli-plugin-babel/preset"]
3 | };
4 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "whatsapp-clone",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "autoprefixer": "^9.7.5",
12 | "core-js": "^3.6.4",
13 | "postcss": "^7.0.27",
14 | "tailwindcss": "^1.2.0",
15 | "vue": "^2.6.11",
16 | "vue-router": "^3.1.5"
17 | },
18 | "devDependencies": {
19 | "@vue/cli-plugin-babel": "~4.2.0",
20 | "@vue/cli-plugin-eslint": "~4.2.0",
21 | "@vue/cli-plugin-router": "~4.2.0",
22 | "@vue/cli-service": "~4.2.0",
23 | "@vue/eslint-config-prettier": "^6.0.0",
24 | "babel-eslint": "^10.0.3",
25 | "eslint": "^6.7.2",
26 | "eslint-plugin-prettier": "^3.1.1",
27 | "eslint-plugin-vue": "^6.1.2",
28 | "prettier": "^1.19.1",
29 | "vue-template-compiler": "^2.6.11"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: [require("tailwindcss"), require("autoprefixer")]
3 | };
4 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bitfumes/whatsapp-clone/4adbfb31618aa59c6b6e30433e66cf16c8281da1/public/favicon.ico
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | <%= htmlWebpackPlugin.options.title %>
9 |
10 |
12 |
13 |
14 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bitfumes/whatsapp-clone/4adbfb31618aa59c6b6e30433e66cf16c8281da1/src/assets/logo.png
--------------------------------------------------------------------------------
/src/assets/tailwind.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 |
3 | @tailwind components;
4 |
5 | @tailwind utilities;
6 |
7 | .bg-wa-dark {
8 | background-color: #255e54;
9 | }
10 | .bg-wa-darker {
11 | background-color: #1f5149;
12 | }
13 |
14 | .bg-wa-lighter {
15 | background-color: #e3fbcc;
16 | }
17 |
18 | .text-wa-lighter {
19 | color: #e3fbcc;
20 | }
21 |
--------------------------------------------------------------------------------
/src/assets/whatsapp_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bitfumes/whatsapp-clone/4adbfb31618aa59c6b6e30433e66cf16c8281da1/src/assets/whatsapp_background.png
--------------------------------------------------------------------------------
/src/components/chats/Header.vue:
--------------------------------------------------------------------------------
1 |
2 |
20 |
21 |
22 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/components/chats/Lists.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
![]()
5 |
6 |
7 |
8 |
{{ data.name }}
9 |
13 | {{ data.time }}
14 |
15 |
16 |
17 |
{{ data.message }}
18 |
22 | {{ data.count }}
23 |
24 |
25 |
26 |
27 |
28 |
29 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/src/components/messages/Header.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |

12 |
13 |
14 |
Whitmans Chat
15 |
Alice, Francis, Jack, Ned, Peter
16 |
17 |
18 |
19 | attach_file
20 | more_vert
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from "vue";
2 | import App from "./App.vue";
3 | import router from "./router";
4 | import "../src/assets/tailwind.css";
5 |
6 | Vue.config.productionTip = false;
7 |
8 | new Vue({
9 | router,
10 | render: h => h(App)
11 | }).$mount("#app");
12 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from "vue";
2 | import VueRouter from "vue-router";
3 | import Chats from "../views/Chats.vue";
4 |
5 | Vue.use(VueRouter);
6 |
7 | const routes = [
8 | {
9 | path: "/",
10 | name: "Chats",
11 | component: Chats
12 | },
13 | {
14 | path: "/contacts",
15 | name: "Contacts",
16 | component: () =>
17 | import(/* webpackChunkName: "about" */ "../views/Contacts.vue")
18 | },
19 | {
20 | path: "/calls",
21 | name: "Calls",
22 | component: () =>
23 | import(/* webpackChunkName: "about" */ "../views/Calls.vue")
24 | },
25 | {
26 | path: "/messages",
27 | name: "Messages",
28 | component: () =>
29 | import(/* webpackChunkName: "about" */ "../views/Messages.vue")
30 | }
31 | ];
32 |
33 | const router = new VueRouter({
34 | mode: "history",
35 | base: process.env.BASE_URL,
36 | routes
37 | });
38 |
39 | export default router;
40 |
--------------------------------------------------------------------------------
/src/views/Calls.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/views/Chats.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
68 |
--------------------------------------------------------------------------------
/src/views/Contacts.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/views/Messages.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
16 |
20 |
arrow_drop_down
29 |
{{ msg.name }}
30 |
31 |
{{ msg.message }}
32 |
{{ msg.time }}
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
62 |
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | theme: {
3 | extend: {},
4 | },
5 | variants: {},
6 | plugins: [],
7 | }
8 |
--------------------------------------------------------------------------------