Fujimod
브라우저에서 카메라 펌웨어를 시험하고 Fujimod SD 부팅 파일을 만든다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A simple web app for a shared mess (about 10 members): daily meals, bazar (grocery) costs, deposits, bazar and washroom-cleaning duties, and bazar memo photos. It runs on Google Apps Script and keeps all data in your own Google Sheet — no server, no cost. • Two meals a day: ☀️ lunch and 🌙 dinner (guests count as extra meals) • Works well on phones; can also run on a nicer Vercel link A + balance means the member gets money back; − means they still have to pay. "Cash with manager" = total deposits − costs paid from the mess fund.README 전문 보기 ↗
A simple web app for a shared mess (about 10 members): daily meals, bazar (grocery) costs, deposits, bazar and washroom-cleaning duties, and bazar memo photos. It runs on Google Apps Script and keeps all data in your own Google Sheet — no server, no cost.
| What | Member | Manager | Admin |
|---|---|---|---|
| Ask for an account from the login page (anyone) | ✅ | ✅ | ✅ |
| Switch own meals on/off (one tap on Home) | ✅ | ✅ | ✅ |
| Upload a bazar memo photo | ✅ | ✅ | ✅ |
| Mark own duty as done | ✅ | ✅ | ✅ |
| See the monthly report, expenses and duties | ✅ | ✅ | ✅ |
| Enter / fix everyone's meals for any day | – | ✅ | ✅ |
| Add / edit expenses and deposits | – | ✅ | ✅ |
| Review memos (approve / reject) | – | ✅ | ✅ |
| Make bazar and cleaning rosters | – | ✅ | ✅ |
| Add members, approve account requests, set roles, reset passwords | – | – | ✅ |
| Settings (meal cut-off times etc.) | – | – | ✅ |
Meal rate = total bazar cost of the month ÷ total meals of the month
Meal cost = your meals × meal rate
Shared share = total shared costs (gas, maid, electricity...) ÷ number of members
Paid = cash deposits + bazar you paid from your own pocket
Balance = paid − (meal cost + shared share)
A + balance means the member gets money back; − means they still have to pay. "Cash with manager" = total deposits − costs paid from the mess fund.
Make a Google Sheet — open sheets.new and give it a name, e.g. Mess Accounts.
Paste the code — in the Sheet open Extensions → Apps Script. Delete everything in Code.gs, paste the whole of deploy/Code.gs (on GitHub: open it → Raw → Ctrl+A, Ctrl+C) and press Ctrl+S.
Deploy — Deploy → New deployment → ⚙️ Web app, set Execute as: Me and Who has access: Anyone, press Deploy and allow the permissions (if you see "Google hasn't verified this app": Advanced → Go to … (unsafe) → Allow — it is your own script).
Open the Web app URL and create the admin account. The sheets, the Drive folder for memo photos and the nightly auto-meal job are set up automatically.
Add members — either way works:
Give one person the Manager role. (To limit spam, at most 10 requests per hour and 20 waiting requests are accepted.)
⚠️ Create the admin account before sharing the link — until then, whoever opens it first can become admin. "Anyone" access is safe after that: nothing can be seen without logging in, and only you can open the Sheet.
Paste the new deploy/Code.gs, save, then Deploy → Manage deployments → ✏️ Edit → Version: New version → Deploy.
This keeps the same URL. Making a New deployment creates a new URL, and the old links (and the Vercel site) stop getting updates.
The page is served from Vercel, while all data still comes from your Google Sheet (through the Apps Script doPost API).
public/config.js — you can edit it directly on GitHub (✏️ icon). Only change the text between the quotes.vercel.json points Vercel to public/).If the Apps Script URL ever changes, just edit public/config.js again — Vercel redeploys by itself.
Members
Manager
Bazar (goes into the meal rate) or Shared (split equally).| Sheet | Contents |
|---|---|
Users | members, roles, password hashes (never plain passwords), default meals |
Meals | one row per member per day: lunch, dinner |
Expenses | bazar / shared, who paid (paidBy empty = mess fund) |
Deposits | money paid in |
Duties | bazar (bazar) and cleaning (clean) duties |
Memos | uploaded memos and their status (pending/approved/rejected) |
Settings | mess name, meal cut-off times, max meals per slot |
Do not change the header row or the column order. Memo photos are kept in the Drive folder
Mess Memo Images; they are not shared publicly — the app shows them itself.
deploy/Code.gs ⭐ the whole app in one file — paste this into Apps Script
public/index.html the same app for Vercel (generated), loads public/config.js
public/config.js the Apps Script Web App URL used by the Vercel site (edit by hand)
public/logo.png browser-tab / home-screen icon (also used by Apps Script via GitHub raw URL)
assets/ logo: original photo and square crops
vercel.json tells Vercel to serve public/
tools/build.js builds deploy/Code.gs and public/index.html from apps-script/
apps-script/ source files
Code.gs doGet/doPost, API router, optional setup()
Db.gs Google Sheet helpers, settings, dates
Auth.gs login, tokens, passwords, members
Meals.gs meals, cut-off times, nightly auto-meal job
Finance.gs expenses, deposits, memos and photos (Drive)
Duties.gs bazar and cleaning duties, rosters
Report.gs monthly report and home dashboard
Index.html page structure
Logo.html the logo as an embedded image (data URI, from assets/logo-192.jpg)
Styles.html design (mobile + dark mode)
JsCore.html API calls, login, navigation, sharing logins
JsPages.html Home, My meals, Memos, Duties, Report, Profile
JsManage.html Meal entry, Expenses, Deposits, Memo review, Members, Settings
appsscript.json manifest (only needed when using clasp)
After changing anything in apps-script/, run:
node tools/build.js
Using clasp instead of copy-paste: create .clasp.json with { "scriptId": "<SCRIPT_ID>", "rootDir": "apps-script" }, then clasp login and clasp push.