├── .gitignore ├── README.md ├── app.vue ├── assets └── css │ └── main.css ├── components ├── BMCButton.vue ├── BankItem.vue ├── Footer.vue ├── Icon │ ├── Coffee.vue │ └── Facebook.vue ├── MoneyInput.vue └── ResultDisplay.vue ├── data └── banks.ts ├── interfaces └── Bank.ts ├── nuxt.config.ts ├── package.json ├── pnpm-lock.yaml ├── public ├── .nojekyll ├── CodeTraveler.png ├── bank │ ├── Alpha-Saving.png │ ├── CIMB-Speed D+.png │ ├── Chill-D.png │ ├── Dime.png │ ├── KKP-Start-Saving.png │ ├── Kept.png │ ├── LH-B-You Wealth.png │ └── TTB-ME-Save.png ├── favicon.ico ├── font │ ├── LINESeedSansTH_W_Bd.woff2 │ ├── LINESeedSansTH_W_He.woff2 │ ├── LINESeedSansTH_W_Rg.woff2 │ ├── LINESeedSansTH_W_Th.woff2 │ └── LINESeedSansTH_W_XBd.woff2 └── other │ └── flowchart.jpg ├── server └── tsconfig.json ├── tailwind.config.js ├── tsconfig.json └── vitest.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | # Nuxt dev/build outputs 2 | .output 3 | .data 4 | .nuxt 5 | .nitro 6 | .cache 7 | dist 8 | 9 | # Node dependencies 10 | node_modules 11 | 12 | # Logs 13 | logs 14 | *.log 15 | 16 | # Misc 17 | .DS_Store 18 | .fleet 19 | .idea 20 | 21 | # Local env files 22 | .env 23 | .env.* 24 | !.env.example 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SaveSmart 2 | 3 | SaveSmart เป็นเครื่องมือที่ช่วยให้คุณเพิ่มดอกเบี้ยเงินฝากให้สูงสุด โดยการกระจายเงินฝากของคุณไปยังบัญชีธนาคารต่างๆ ตามอัตราดอกเบี้ยและเงื่อนไขของแต่ละบัญชี ที่มาจาก [เนิร์ดไฟแนนซ์](https://www.facebook.com/photo/?fbid=122135196230270713&set=a.122105441570270713). 4 | 5 |
6 | Flow chart by เนิร์ดไฟแนนซ์ 7 |
8 | 9 | ## Setup 10 | 11 | Make sure to install the dependencies: 12 | 13 | ```bash 14 | # npm 15 | npm install 16 | 17 | # pnpm 18 | pnpm install 19 | 20 | # yarn 21 | yarn install 22 | 23 | # bun 24 | bun install 25 | ``` 26 | 27 | ## Development Server 28 | 29 | Start the development server on `http://localhost:3000`: 30 | 31 | ```bash 32 | # npm 33 | npm run dev 34 | 35 | # pnpm 36 | pnpm run dev 37 | 38 | # yarn 39 | yarn dev 40 | 41 | # bun 42 | bun run dev 43 | ``` 44 | 45 | ## Production 46 | 47 | Build the application for production: 48 | 49 | ```bash 50 | # npm 51 | npm run build 52 | 53 | # pnpm 54 | pnpm run build 55 | 56 | # yarn 57 | yarn build 58 | 59 | # bun 60 | bun run build 61 | ``` 62 | 63 | Locally preview production build: 64 | 65 | ```bash 66 | # npm 67 | npm run preview 68 | 69 | # pnpm 70 | pnpm run preview 71 | 72 | # yarn 73 | yarn preview 74 | 75 | # bun 76 | bun run preview 77 | ``` 78 | 79 | ## Contributors 80 | 81 |
82 | 83 | 84 | 85 |
86 | -------------------------------------------------------------------------------- /app.vue: -------------------------------------------------------------------------------- 1 | 101 | 102 | 344 | -------------------------------------------------------------------------------- /assets/css/main.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | @font-face { 6 | font-family: "LINESeedSans"; 7 | src: url("/save-smart/font/LINESeedSansTH_W_Rg.woff2") format("woff2"); 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | @font-face { 12 | font-family: "LINESeedSans"; 13 | src: url("/save-smart/font/LINESeedSansTH_W_Bd.woff2") format("woff2"); 14 | font-weight: bold; 15 | font-style: bold; 16 | } 17 | 18 | html { 19 | background-color: #fdfdfd; 20 | } 21 | body { 22 | font-family: LINESeedSans, sans-serif; 23 | } 24 | -------------------------------------------------------------------------------- /components/BMCButton.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /components/BankItem.vue: -------------------------------------------------------------------------------- 1 | 50 | 51 | 60 | -------------------------------------------------------------------------------- /components/Footer.vue: -------------------------------------------------------------------------------- 1 | 41 | -------------------------------------------------------------------------------- /components/Icon/Coffee.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /components/Icon/Facebook.vue: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /components/MoneyInput.vue: -------------------------------------------------------------------------------- 1 | 42 | 43 | 54 | -------------------------------------------------------------------------------- /components/ResultDisplay.vue: -------------------------------------------------------------------------------- 1 | 38 | 39 | 52 | -------------------------------------------------------------------------------- /data/banks.ts: -------------------------------------------------------------------------------- 1 | import type { Bank } from "~/interfaces/Bank"; 2 | 3 | export const banks : Bank[] = [ 4 | { 5 | //0 6 | logo: "/save-smart/bank/Dime.png", 7 | name: "Dime! Save", 8 | bank: "เกียรตินาคิน", 9 | saving: 0, 10 | ratio: 0, 11 | interest: 3 / 100, 12 | totalInterest: 0, 13 | }, 14 | { 15 | //1 16 | logo: "/save-smart/bank/TTB-ME-Save.png", 17 | name: "TTB ME Save", 18 | bank: "ธนาคารทหารไทยธนชาต", 19 | saving: 0, 20 | ratio: 0, 21 | interest: 2.2 / 100, 22 | totalInterest: 0, 23 | }, 24 | { 25 | //2 26 | logo: "/save-smart/bank/KKP-Start-Saving.png", 27 | name: "KKP Start Saving", 28 | bank: "ธนาคารเกียรตินาคินภัทร", 29 | saving: 0, 30 | ratio: 0, 31 | interest: 2.2 / 100, 32 | totalInterest: 0, 33 | }, 34 | { 35 | //3 36 | logo: "/save-smart/bank/Chill-D.png", 37 | name: "CIMB Chill-D", 38 | bank: "ธนาคาร ซีไอเอ็มบี ไทย", 39 | saving: 0, 40 | ratio: 0, 41 | interest: 2.21 / 100, 42 | totalInterest: 0, 43 | }, 44 | { 45 | //4 46 | logo: "/save-smart/bank/KKP-Start-Saving.png", 47 | name: "KKP Start Saving", 48 | bank: "ธนาคารเกียรตินาคินภัทร", 49 | saving: 0, 50 | ratio: 0, 51 | interest: 2 / 100, 52 | totalInterest: 0, 53 | }, 54 | { 55 | //5 56 | logo: "/save-smart/bank/Alpha-Saving.png", 57 | name: "Alpha Saving", 58 | bank: "ธนาคารไทยเครดิต", 59 | saving: 0, 60 | ratio: 0, 61 | interest: 2 / 100, 62 | totalInterest: 0, 63 | }, 64 | { 65 | //6 66 | logo: "/save-smart/bank/Kept.png", 67 | name: "Kept", 68 | bank: "ธนาคารกรุงศรีอยุธยา", 69 | saving: 0, 70 | ratio: 0, 71 | interest: 1.87 / 100, 72 | totalInterest: 0, 73 | }, 74 | { 75 | //7 76 | logo: "/save-smart/bank/LH-B-You Wealth.png", 77 | name: "LH B-You Wealth", 78 | bank: "ธนาคารแลนด์ แอนด์ เฮ้าส์", 79 | saving: 0, 80 | ratio: 0, 81 | interest: 1.87 / 100, 82 | totalInterest: 0, 83 | }, 84 | { 85 | //8 86 | logo: "/save-smart/bank/TTB-ME-Save.png", 87 | name: "TTB ME Save", 88 | bank: "ธนาคารทหารไทยธนชาต", 89 | saving: 0, 90 | ratio: 0, 91 | interest: 1.6 / 100, 92 | totalInterest: 0, 93 | }, 94 | { 95 | //9 96 | logo: "/save-smart/bank/CIMB-Speed D+.png", 97 | name: "CIMB Speed D+", 98 | bank: "ธนาคาร ซีไอเอ็มบี ไทย", 99 | saving: 0, 100 | ratio: 0, 101 | interest: 1.66 / 100, 102 | totalInterest: 0, 103 | }, 104 | ]; 105 | -------------------------------------------------------------------------------- /interfaces/Bank.ts: -------------------------------------------------------------------------------- 1 | export interface Bank { 2 | logo: string; 3 | name: string; 4 | bank: string; 5 | saving: number; 6 | ratio: number; 7 | interest: number; 8 | totalInterest: number; 9 | } 10 | -------------------------------------------------------------------------------- /nuxt.config.ts: -------------------------------------------------------------------------------- 1 | // https://nuxt.com/docs/api/configuration/nuxt-config 2 | export default defineNuxtConfig({ 3 | compatibilityDate: "2024-04-03", 4 | devtools: { enabled: true }, 5 | css: ["~/assets/css/main.css"], 6 | ssr: false, 7 | app: { 8 | baseURL: "/save-smart", 9 | buildAssetsDir: "assets", 10 | head: { 11 | title: "SaveSmart-เนิร์ดไฟแนนซ์ x CodeTraveler", 12 | link: [ 13 | { 14 | rel: "icon", 15 | type: "image/png", 16 | href: "/save-smart/favicon.ico", 17 | }, 18 | ], 19 | }, 20 | }, 21 | 22 | postcss: { 23 | plugins: { 24 | tailwindcss: {}, 25 | autoprefixer: {}, 26 | }, 27 | }, 28 | 29 | modules: ["@nuxt/image", "nuxt-gtag"], 30 | gtag: { 31 | id: "G-3NB3NLPLSJ", 32 | }, 33 | }); 34 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nuxt-app", 3 | "private": true, 4 | "type": "module", 5 | "scripts": { 6 | "build": "nuxt build", 7 | "dev": "nuxt dev", 8 | "test:unit": "vitest", 9 | "generate": "nuxt generate", 10 | "preview": "nuxt preview", 11 | "postinstall": "nuxt prepare", 12 | "deploy": "gh-pages --dotfiles -d .output/public" 13 | }, 14 | "dependencies": { 15 | "@nuxt/image": "^1.7.0", 16 | "nuxt": "^3.12.3", 17 | "nuxt-gtag": "^2.0.7", 18 | "vue": "latest" 19 | }, 20 | "devDependencies": { 21 | "@nuxt/test-utils": "^3.13.1", 22 | "@vue/test-utils": "^2.4.6", 23 | "autoprefixer": "^10.4.19", 24 | "gh-pages": "^6.1.1", 25 | "postcss": "^8.4.39", 26 | "tailwindcss": "^3.4.6", 27 | "vitest": "^2.0.3" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /public/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itoon/save-smart/f57d54fa90748582c696e275c6f210dd097e5bd6/public/.nojekyll -------------------------------------------------------------------------------- /public/CodeTraveler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itoon/save-smart/f57d54fa90748582c696e275c6f210dd097e5bd6/public/CodeTraveler.png -------------------------------------------------------------------------------- /public/bank/Alpha-Saving.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itoon/save-smart/f57d54fa90748582c696e275c6f210dd097e5bd6/public/bank/Alpha-Saving.png -------------------------------------------------------------------------------- /public/bank/CIMB-Speed D+.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itoon/save-smart/f57d54fa90748582c696e275c6f210dd097e5bd6/public/bank/CIMB-Speed D+.png -------------------------------------------------------------------------------- /public/bank/Chill-D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itoon/save-smart/f57d54fa90748582c696e275c6f210dd097e5bd6/public/bank/Chill-D.png -------------------------------------------------------------------------------- /public/bank/Dime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itoon/save-smart/f57d54fa90748582c696e275c6f210dd097e5bd6/public/bank/Dime.png -------------------------------------------------------------------------------- /public/bank/KKP-Start-Saving.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itoon/save-smart/f57d54fa90748582c696e275c6f210dd097e5bd6/public/bank/KKP-Start-Saving.png -------------------------------------------------------------------------------- /public/bank/Kept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itoon/save-smart/f57d54fa90748582c696e275c6f210dd097e5bd6/public/bank/Kept.png -------------------------------------------------------------------------------- /public/bank/LH-B-You Wealth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itoon/save-smart/f57d54fa90748582c696e275c6f210dd097e5bd6/public/bank/LH-B-You Wealth.png -------------------------------------------------------------------------------- /public/bank/TTB-ME-Save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itoon/save-smart/f57d54fa90748582c696e275c6f210dd097e5bd6/public/bank/TTB-ME-Save.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itoon/save-smart/f57d54fa90748582c696e275c6f210dd097e5bd6/public/favicon.ico -------------------------------------------------------------------------------- /public/font/LINESeedSansTH_W_Bd.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itoon/save-smart/f57d54fa90748582c696e275c6f210dd097e5bd6/public/font/LINESeedSansTH_W_Bd.woff2 -------------------------------------------------------------------------------- /public/font/LINESeedSansTH_W_He.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itoon/save-smart/f57d54fa90748582c696e275c6f210dd097e5bd6/public/font/LINESeedSansTH_W_He.woff2 -------------------------------------------------------------------------------- /public/font/LINESeedSansTH_W_Rg.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itoon/save-smart/f57d54fa90748582c696e275c6f210dd097e5bd6/public/font/LINESeedSansTH_W_Rg.woff2 -------------------------------------------------------------------------------- /public/font/LINESeedSansTH_W_Th.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itoon/save-smart/f57d54fa90748582c696e275c6f210dd097e5bd6/public/font/LINESeedSansTH_W_Th.woff2 -------------------------------------------------------------------------------- /public/font/LINESeedSansTH_W_XBd.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itoon/save-smart/f57d54fa90748582c696e275c6f210dd097e5bd6/public/font/LINESeedSansTH_W_XBd.woff2 -------------------------------------------------------------------------------- /public/other/flowchart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itoon/save-smart/f57d54fa90748582c696e275c6f210dd097e5bd6/public/other/flowchart.jpg -------------------------------------------------------------------------------- /server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../.nuxt/tsconfig.server.json" 3 | } 4 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | export default { 3 | content: [ 4 | "./components/**/*.{js,vue,ts}", 5 | "./layouts/**/*.vue", 6 | "./pages/**/*.vue", 7 | "./plugins/**/*.{js,ts}", 8 | "./app.vue", 9 | "./error.vue", 10 | ], 11 | theme: { 12 | extend: {}, 13 | }, 14 | plugins: [], 15 | }; 16 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // https://nuxt.com/docs/guide/concepts/typescript 3 | "extends": "./.nuxt/tsconfig.json" 4 | } 5 | -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- 1 | import { defineVitestConfig } from "@nuxt/test-utils/config"; 2 | 3 | export default defineVitestConfig({ 4 | // any custom Vitest config you require 5 | }); 6 | --------------------------------------------------------------------------------