├── .env ├── backend ├── .gitignore ├── package.json ├── index.js └── yarn.lock ├── docs ├── pwa.png ├── sheet.png ├── diagram.png ├── passwdhashing.png ├── pasted image 0.png ├── pasted image 1.png ├── pasted image 2.png ├── pasted image 3.png ├── pasted image 4.png ├── pasted image 5.png └── DEVELOPMENT.md ├── next-env.d.ts ├── public ├── favicon.ico ├── favicon.png ├── icons │ ├── apple-icon-180.png │ ├── manifest-icon-192.png │ ├── manifest-icon-512.png │ ├── apple-splash-1125-2436.jpg │ ├── apple-splash-1136-640.jpg │ ├── apple-splash-1170-2532.jpg │ ├── apple-splash-1242-2208.jpg │ ├── apple-splash-1242-2688.jpg │ ├── apple-splash-1284-2778.jpg │ ├── apple-splash-1334-750.jpg │ ├── apple-splash-1536-2048.jpg │ ├── apple-splash-1620-2160.jpg │ ├── apple-splash-1668-2224.jpg │ ├── apple-splash-1668-2388.jpg │ ├── apple-splash-1792-828.jpg │ ├── apple-splash-2048-1536.jpg │ ├── apple-splash-2048-2732.jpg │ ├── apple-splash-2160-1620.jpg │ ├── apple-splash-2208-1242.jpg │ ├── apple-splash-2224-1668.jpg │ ├── apple-splash-2388-1668.jpg │ ├── apple-splash-2436-1125.jpg │ ├── apple-splash-2532-1170.jpg │ ├── apple-splash-2688-1242.jpg │ ├── apple-splash-2732-2048.jpg │ ├── apple-splash-2778-1284.jpg │ ├── apple-splash-640-1136.jpg │ ├── apple-splash-750-1334.jpg │ └── apple-splash-828-1792.jpg ├── app.js ├── serviceWorker.js └── manifest.json ├── postcss.config.js ├── interface └── UserData.ts ├── styles └── globals.css ├── components ├── Scroller.tsx ├── Card.tsx ├── LoginInfo.tsx ├── Container.tsx ├── Footer.tsx ├── LogoutBtn.tsx ├── OutgoDday.tsx ├── PWAPromote.tsx ├── OutgoState.tsx ├── LoginForm.tsx ├── PasswdForm.tsx └── ApplyForm.tsx ├── tailwind.config.js ├── pages ├── _app.tsx ├── passwd.tsx ├── logout.tsx ├── login.tsx ├── apply.tsx ├── abort.tsx ├── api │ ├── login.ts │ ├── passwd.ts │ ├── status.ts │ └── outgo.ts ├── index.tsx ├── etc │ └── credits.tsx └── _document.tsx ├── .eslintrc.json ├── .gitignore ├── tsconfig.json ├── database.sql ├── utils └── index.ts ├── data └── date.json ├── package.json └── README.md /.env: -------------------------------------------------------------------------------- 1 | JWT_TOKEN=1 -------------------------------------------------------------------------------- /backend/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | data 3 | -------------------------------------------------------------------------------- /docs/pwa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/docs/pwa.png -------------------------------------------------------------------------------- /docs/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/docs/sheet.png -------------------------------------------------------------------------------- /docs/diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/docs/diagram.png -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/favicon.png -------------------------------------------------------------------------------- /docs/passwdhashing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/docs/passwdhashing.png -------------------------------------------------------------------------------- /docs/pasted image 0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/docs/pasted image 0.png -------------------------------------------------------------------------------- /docs/pasted image 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/docs/pasted image 1.png -------------------------------------------------------------------------------- /docs/pasted image 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/docs/pasted image 2.png -------------------------------------------------------------------------------- /docs/pasted image 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/docs/pasted image 3.png -------------------------------------------------------------------------------- /docs/pasted image 4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/docs/pasted image 4.png -------------------------------------------------------------------------------- /docs/pasted image 5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/docs/pasted image 5.png -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {} 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /public/icons/apple-icon-180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-icon-180.png -------------------------------------------------------------------------------- /public/icons/manifest-icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/manifest-icon-192.png -------------------------------------------------------------------------------- /public/icons/manifest-icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/manifest-icon-512.png -------------------------------------------------------------------------------- /public/icons/apple-splash-1125-2436.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-1125-2436.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-1136-640.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-1136-640.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-1170-2532.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-1170-2532.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-1242-2208.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-1242-2208.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-1242-2688.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-1242-2688.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-1284-2778.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-1284-2778.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-1334-750.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-1334-750.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-1536-2048.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-1536-2048.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-1620-2160.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-1620-2160.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-1668-2224.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-1668-2224.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-1668-2388.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-1668-2388.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-1792-828.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-1792-828.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-2048-1536.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-2048-1536.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-2048-2732.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-2048-2732.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-2160-1620.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-2160-1620.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-2208-1242.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-2208-1242.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-2224-1668.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-2224-1668.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-2388-1668.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-2388-1668.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-2436-1125.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-2436-1125.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-2532-1170.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-2532-1170.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-2688-1242.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-2688-1242.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-2732-2048.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-2732-2048.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-2778-1284.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-2778-1284.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-640-1136.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-640-1136.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-750-1334.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-750-1334.jpg -------------------------------------------------------------------------------- /public/icons/apple-splash-828-1792.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GBSWHS/Jongsimgwan-outgo/HEAD/public/icons/apple-splash-828-1792.jpg -------------------------------------------------------------------------------- /interface/UserData.ts: -------------------------------------------------------------------------------- 1 | export interface UserData { 2 | id: string 3 | grade: number 4 | class: number 5 | num: number 6 | nickname: String 7 | } 8 | -------------------------------------------------------------------------------- /styles/globals.css: -------------------------------------------------------------------------------- 1 | @import '@fontsource/noto-sans-kr'; 2 | 3 | * { 4 | font-family: 'Noto Sans CJK KR', Arial, Helvetica, sans-serif; 5 | word-break: keep-all; 6 | } 7 | -------------------------------------------------------------------------------- /public/app.js: -------------------------------------------------------------------------------- 1 | if ('serviceWorker' in navigator) { 2 | window.addEventListener('load', function () { 3 | navigator.serviceWorker.register('/serviceWorker.js') 4 | }) 5 | } 6 | -------------------------------------------------------------------------------- /components/Scroller.tsx: -------------------------------------------------------------------------------- 1 | export default function Scroller ({ children }: any) { 2 | return ( 3 |
4 | {children} 5 |
6 | ) 7 | } 8 | -------------------------------------------------------------------------------- /components/Card.tsx: -------------------------------------------------------------------------------- 1 | export default function Card ({ children }: any) { 2 | return ( 3 |
4 | {children} 5 |
6 | ) 7 | } 8 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | purge: ['./pages/**/*.{js,ts,jsx,tsx}', './components/**/*.{js,ts,jsx,tsx}'], 3 | darkMode: false, // or 'media' or 'class' 4 | theme: { 5 | extend: {} 6 | }, 7 | variants: { 8 | extend: {} 9 | }, 10 | plugins: [] 11 | } 12 | -------------------------------------------------------------------------------- /components/LoginInfo.tsx: -------------------------------------------------------------------------------- 1 | import { UserData } from '../interface/UserData' 2 | 3 | interface Props { 4 | user: UserData 5 | } 6 | 7 | export default function LoginInfo ({ user }: Props) { 8 | return ( 9 |
10 | {user.grade}학년 {user.class}반 {user.nickname}님으로 로그인 됨 11 |
12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /components/Container.tsx: -------------------------------------------------------------------------------- 1 | export default function Container ({ children }: any) { 2 | return ( 3 |
4 |
5 | {children} 6 |
7 |
8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /components/Footer.tsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link' 2 | 3 | export default function Footer () { 4 | return ( 5 |
6 | © 2021. GBSWHS. Credits 7 |
8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /backend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "backend", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "dependencies": { 7 | "google-spreadsheet": "^3.1.15", 8 | "googleapis": "^68.0.0", 9 | "knex": "^0.95.1", 10 | "moment": "^2.29.1", 11 | "mysql": "^2.18.1", 12 | "node-cron": "^3.0.0" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /components/LogoutBtn.tsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link' 2 | 3 | export default function LogoutBtn () { 4 | return ( 5 |
6 | 7 | 8 | 9 |
10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /pages/_app.tsx: -------------------------------------------------------------------------------- 1 | import Head from 'next/head' 2 | import '../styles/globals.css' 3 | import 'tailwindcss/tailwind.css' 4 | 5 | function MyApp ({ Component, pageProps }: any) { 6 | return ( 7 | <> 8 | 9 | 정심관 출사 관리 시스템 - OutGo 10 | 11 | 12 | 13 | ) 14 | } 15 | 16 | export default MyApp 17 | -------------------------------------------------------------------------------- /pages/passwd.tsx: -------------------------------------------------------------------------------- 1 | import Container from '../components/Container' 2 | import Footer from '../components/Footer' 3 | import PasswdForm from '../components/PasswdForm' 4 | import Scroller from '../components/Scroller' 5 | 6 | export default function PasswdPage () { 7 | return ( 8 | 9 | 10 | 11 | 12 |