{"id":20154544,"url":"https://github.com/gesangpj/kasbon-js","last_synced_at":"2026-04-11T17:04:41.385Z","repository":{"id":197944449,"uuid":"699714946","full_name":"GesangPJ/kasbon-js","owner":"GesangPJ","description":"Website manajemen kasbon dengan NextJS, ExpressJS, PostgreSQL","archived":false,"fork":false,"pushed_at":"2023-10-29T06:38:04.000Z","size":24199,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-13T12:39:25.343Z","etag":null,"topics":["expressjs","kasbon","nextjs","nodejs","postgresql"],"latest_commit_sha":null,"homepage":"https://kasbon-js.vercel.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GesangPJ.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-03T07:35:31.000Z","updated_at":"2023-10-15T12:14:04.000Z","dependencies_parsed_at":"2023-10-15T23:14:17.157Z","dependency_job_id":"4016787c-39d4-429c-8001-a504bc0abcba","html_url":"https://github.com/GesangPJ/kasbon-js","commit_stats":null,"previous_names":["gesangpj/kasbon-js"],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GesangPJ%2Fkasbon-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GesangPJ%2Fkasbon-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GesangPJ%2Fkasbon-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GesangPJ%2Fkasbon-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GesangPJ","download_url":"https://codeload.github.com/GesangPJ/kasbon-js/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241593520,"owners_count":19987581,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["expressjs","kasbon","nextjs","nodejs","postgresql"],"created_at":"2024-11-13T23:27:18.212Z","updated_at":"2026-04-11T17:04:41.357Z","avatar_url":"https://github.com/GesangPJ.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# KASBON WEBSITE\n\n\n\n\n\n\n\nhttps://github.com/GesangPJ/kasbon-js/assets/26625652/8bb10cce-d277-4b27-99b2-d8cdadfbe962\n\n\n\n\n\n\n\nWebsite berbasis NodeJS bertujuan untuk mengelola Kasbon, menggunakan NextJS untuk frontend (client-side), dan ExpressJS untuk backend (server-side),data kasbon dan akun dimasukkan dan dikelola dengan database PostgreSQL v16. \n\n**Ingin menggunakan aplikasi ini pada usaha anda ? dan/ source code aplikasi untuk tujuan komersial? Buka issue baru-\u003e feature request-\u003e masukkan detail permintaan**\n\n**Want to use this application and or the source code for commercial purposes? open new issue-\u003efeature request-\u003e input your request details**\n\n## Daftar halaman pada aplikasi\n#### A. Halaman Karyawan\n1. Halaman Dashboard Karyawan\n2. Halaman Input Kasbon oleh Karyawan\n\n#### B. Halaman Admin:\n1. Halaman Dashboard Admin\n2. Halaman Request (Persetujuan Kasbon)\n3. Halaman Bayar (Konfirmasi Bayar/Lunas)\n4. Halaman Download Bukti Kasbon (Download ke Docx)\n5. Halaman Laporan Kasbon (Bisa langsung print)\n6. Halaman tambah akun admin\n7. Halaman tambah akun karyawan\n8. Halaman daftar admin (beserta fitur ganti password)\n9. Halaman daftar karyawan\n\n## Web Features\n1. Backend session using express-session\n2. Password Hashing using bcrypt\n3. API Key\n4. Cookies\n5. CORS\n6. Docx download\n7. Print report\n\n## Changelog\n\n- _Build means it's tested and safe to build the project_\n- _Preview means this version has not been built yet_\n\n### v1.7.5-BUILD\n\n- Add print function for Laporan Kasbon Karyawan\n- Add print function for Laporan Kasbon Seluruh Karyawan\n- Move Jumlah total, total kasbon, sisa kasbon outside table\n- Cleanup backend\n- Re-test API Key\n- Re-test backend from process hang [No hang, all request complete]\n\n### v1.7.0-BUILD\n\n- Add API Authorization function\n- Rebuild Docker image\n- Rebuild Docker compose\n- Cleanup backend code\n- Rebuild frontend ENV\n- Rebuild backend ENV\n\n### v1.5.0-BUILD\n\n- Add Laporan Page for Each Karyawan\n- Add Row Jumlah Total, Total Kasbon, Sisa Kasbon for Table Laporan Kasbon Karyawan\n- Add Laporan Page for All Karyawan\n- Add Excel export function for both\n\n### v1.4.7-BUILD\n\n- Add data grid view of karyawan account\n- Add data grid view of admin account\n- Admin ability to change admin password with old password verification\n- Cleanup backend code\n\n### v1.4.4-PREVIEW\n\n- Fix error when there are no data in request table (empty)\n- Fix error when there are no data in view dashboard\n- Prepare database for production\n\n### v1.4.0-BUILD\n\n- Upgrade and tested in NodeJS v21.0.0\n- Upgrade and tested in PostgreSQL 16.0\n- Working create services in Windows\n- Working create services in Ubuntu\n- Remove unnecessary files\n- Cleanup some codes\n- Version upgrade to 1.4.0 both backend and frontend\n\n### v1.3.5-BUILD\n\n- Replace Request page table with MUI X Data Grid\n- Fix Bayar page sorting error\n- Backend version 1.2.1\n- Backend hang fix (by adding some client.release()) [i hope it's work and no more hang]\n- Update admin sidebar\n\n### v1.2.0-BUILD\n\n- Backend version update v1.1.5\n- Replace Admin Dashboard with MUI X Data Grid table\n- Replace Karyawan Dashboard with MUI X Data Grid table\n- Update template request DOCX\n- Update template lunas DOCX\n- Increase backend request handle so it won't hang easily\n\n### v1.1.1-BUILD\n\n- Add access protection for Admin Dashboard page, only admin can access\n- Add access protection for Karyawan Dashboard page\n- Add access protection for Input Kasbon page\n- Add access protection for Request Page, only admin can access\n- Add access protection for Bayar page, only admin can access\n- Add access protection for Download page, only admin can access\n- Fix Docx download bugs\n- Fix docx template\n- Remove unnecessary codes\n\n### v1.0.8-BUILD\n\n- Working Download Request Page, download data to Docx format.\n- Working Download Bayar (Bukti Lunas), download data to Docx format.\n- Remove unnecessary api.\n- Working Docxtemplater module.\n\n### v1.0.7-BUILD\n\n- Working API URL from env\n- All page is working seamless\n- Next Build version is work like a charm\n\n### v1.0.7-PREVIEW\n\n- Change API URL in frontend (client-side)\n- Change CORS options in backend\n- Trying to make it work in Docker Container\n- Docker Container available [BETA]\n- Docker Compose available [BETA]\n- Fix typos in some files\n- Fix env files for frontend and backend\n\n### v1.0.5-Build\n\n- Single submit button for request page\n- Single submit button for bayar page\n- Fix sorting system for dashboard Admin\n- Fix sorting system for dashboard User (Karyawan)\n\n### v1.0.0-Build\n\n- Working Login Page and directing to respective account role\n- Working Dashboard, both for Admin and User\n- Working Input Kasbon for User with validation for each input field\n- Working Request Page for Admin\n- Working Bayar Page for Admin with single button for sending change\n- Fast Build and smaller size using SWC Minify\n- Latest Build doesn't have any bugs\n\n### Login Page\n\n\u003cimg src=\"https://github.com/GesangPJ/kasbon-js/blob/main/frontend/public/images/ss/desktop-login-1.png\" width = \"300\" height = \"300\" \u003e\n\nLogin Page for Desktop\n\n\u003cimg src=\"https://github.com/GesangPJ/kasbon-js/blob/main/frontend/public/images/ss/mobile-login.png\" width = \"250\" height = \"515\" \u003e\n\nLogin Page in mobile mode\n\n## B. Install\n\n1. Pull this repo to your directory\n2. In project root, go to /frontend use `yarn install` or `npm install` to install all dependencies\n3. Go to /backend\n4. use `yarn install` or `npm install` to install all backend dependencies\n5. Make sure you have PostgreSQL installed or access via cloud.\n6. Define your PostgreSQL Connection in /backend/file_env\n7. Start backend ExpressJS using `node server.js` or `nodemon server.js` (`nodemon` is recomended because it has hot-reload function)\n8. Define your frontend (NextJS) env in file /frontend/frontend_env\n9. Start Development Frontend NextJS using `yarn dev` or `npm dev`\n\nIf you want to build the project, you can us `yarn build` or `next build` or `npm build`\nIt use Minify SWC for compiler, you can change it in `next.config.js`\nBy using SWC, the build output perform more than good, also it reduce the production build from `~700MB` to `~80MB` in .next directory itself.\n\n### POSTGRES SETUP\n\n1. Access to your postgres using postgres account\n2. Create new database named `kasbondev` for using development test data\n3. Create new database named `kasbon_production` for production empty kasbon data\n4. Click right to database namem click restore\n5. Navigate to project dir/data/sql/kasbondev.sql to get development and test data, in option enable Do Not Save Owner\n6. For kasbon_production same as kasbondev\n7. If error occured, refresh database, and check if the table admin_kasbon, user_kasbon is exist, if it's exist, it's safe \n\n## C. Create Backend Service In Windows\n\n1. In terminal at root directory (/kasbon-js) use command '.\\nssm install \u003cservice name\u003e or kasbon-backend\n2. GUI will open, specify Path to /backend/server.js\n3. Click Install button\n4. Makesure popup complete appear\n5. check service in windwos services-\u003e makesure there's service called 'kasbon-backend' or the service name specified by yourself\n6. Makesure that the service start as windows start by right clicking the service name-\u003e properties and startup type to 'Automatic'\n\n## D. Create Frontend Service In Windows\n\n1. Install ``` npm install pm2 -g ```\n2. In frontend directory ``` pm2 start npm --name \"\u003c Service name\u003e\" -- start ```\n3. Use ``` pm2 startup ``` and follow instruction to make it start as windows start\n\n## E. Create Services in Ubuntu\n\n1. For backend : create file in /etc/sytemd/system 'kasbon-backend.service'\n2. Put this inside :\n```\n[Unit]\nDescription=ExpressJS Kasbon Backend Service\n\n[Service]\nWorkingDirectory=\u003cyour project directory\u003e\nExecStart=sudo /usr/bin/node \u003cpath to project directory\u003e/kasbon-js/backend/server.js\nRestart=always\nUser=\u003cyour username\u003e\n\n[Install]\nWantedBy=multi-user.target\n```\n3. Save\n\n4. For Frontend : same as before, but ExecStart is ``` ExecStart=/usr/bin/npm run start ```\n5. Save\n6. To start at startup ``` sudo systemctl enable kasbon-frontend ``` \u0026 ``` sudo systemctl enable kasbon-backend ```\n\n\n\n\n\n\n## F. Modules\n\n- React NextJS\n- MUI Core\n- MUI Icons\n- MUI Maerial\n- ExpressJS\n- Express-session\n- Cors\n- pg\n- connect-pg-simple\n- cookie-parser\n- nodemon\n- Docxtemplater\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgesangpj%2Fkasbon-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgesangpj%2Fkasbon-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgesangpj%2Fkasbon-js/lists"}