FloCafe
FloCafe is the free, local-first restaurant POS in the FloPOS ecosystem. Run orders, tables, kitchen display, and local data without a software subscription.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A second-hand marketplace where college students buy and sell books, calculators, lab coats, cycles and hostel items. It has three AI features: personalised recommendations from search history, a fair-price predictor and a spam-listing detector.
Tech stack: Python · Flask · SQLite · scikit-learn · HTML/CSS/JS. It needs no internet connection or database server.
Live demo: https://campuskart-delta-lilac.vercel.app (demo data resets periodically, because Vercel gives each server instance a fresh copy of the database).
pip install -r requirements.txt
python seed.py # creates campuskart.db with demo data (run again any time to reset)
python app.py # open http://127.0.0.1:5000
Optional: python test_app.py runs automated tests of every page and flow. It resets the
database, so run python seed.py afterwards.
On the login page you can click any demo account to log in instantly.
| User | Password | What to show | |
|---|---|---|---|
| Admin | [email protected] | admin123 | Dashboard, AI-flagged listings, users, SQL explorer |
| Rahul Sharma (CSE, 3rd yr) | [email protected] | demo123 | Searched dbms book, python, laptop… → gets CS books and keyboard |
| Priya Patel (Mech, 2nd yr) | [email protected] | demo123 | Searched engineering drawing, drafter… → gets drawing tools and calculators |
| Karan Mehta (ECE, 3rd yr) | [email protected] | demo123 | Searched arduino, multimeter… → gets electronics |
| Aisha Khan (IT, 1st yr) | [email protected] | demo123 | Searched cycle, mattress, kettle… → gets hostel items and cycles |
| Neha Gupta (Civil, 1st yr) | [email protected] | demo123 | New user with no history → sees "Trending" (cold-start problem) |
Seller accounts (vikram, sneha, arjun, meera, rohan, ravi @college.edu) also use demo123.
arduno or calculatr: there's no exact match, but AI shows
"Did you mean…".USERS 1──N PRODUCTS N──1 CATEGORIES
USERS 1──N ORDERS N──1 PRODUCTS
ORDERS 1──1 REVIEWS
USERS M──N PRODUCTS (via WISHLIST, composite PK)
USERS 1──N SEARCH_HISTORY
USERS 1──N PRODUCT_VIEWS N──1 PRODUCTS
USERS 1──N NOTIFICATIONS
| Table | Purpose | Key constraints |
|---|---|---|
| users | students and admins | PK, UNIQUE email, CHECK role/year |
| categories | 9 item categories | UNIQUE name |
| products | listings | FK seller/category, CHECK price > 0, CHECK condition/status |
| orders | purchases | FK product/buyer, CHECK status |
| reviews | rating of a seller per order | UNIQUE order_id (1:1), CHECK rating 1-5 |
| wishlist | saved items | composite PK (user_id, product_id) |
| search_history | every search (AI input) | FK user, ON DELETE CASCADE |
| product_views | every product opened (AI input) | FK user, product |
| notifications | alerts, mostly from triggers | FK user |
added_at depends on the whole key.orders does not store seller_id,
because it can be derived through products, and seller rating is computed by a view
instead of being stored.| Trigger | When | What it does |
|---|---|---|
| trg_order_validate | BEFORE INSERT on orders | Aborts if the item is already sold or the buyer is the seller (prevents double selling) |
| trg_order_placed | AFTER INSERT on orders | Marks product sold and notifies the seller |
| trg_order_cancelled | AFTER UPDATE on orders | Puts product back on sale and notifies the seller |
| trg_wishlist_sold_alert | AFTER UPDATE on products | Notifies users who wishlisted a product when it is sold |
| trg_flagged_listing | AFTER INSERT on products | Notifies admins when AI flags a listing |
| trg_listing_moderated | AFTER UPDATE on products | Tells the seller their listing was approved or rejected |
v_product_details (4-table join), v_seller_ratings (AVG + GROUP BY), v_category_sales
(LEFT JOIN + SUM), v_admin_stats (scalar subqueries).
with db:, which commits on success and rolls back on error.
Buying is atomic: the order insert, the product status change and the notification either all
happen or none do.ON DELETE CASCADE.ai/)ai/recommender.py)weight × similarity across all signals, and that signal becomes
the explanation shown on the card.ai/price_predictor.py)ai/spam_detector.py)datetime('now') → NOW(), and RAISE → SIGNAL in triggers).report/CampusKart_IEEE_Report.docx (editable) and report/CampusKart_IEEE_Report.pdf are
in IEEE two-column A4 conference format. Before submitting, replace the yellow-highlighted
placeholders (author names, department, college, guide) in the Word file and export it to PDF again.
All diagrams are in report/figures/ as 300-dpi PNGs: ER diagram, relational schema,
architecture, DFD level 0 and level 1, use case, recommendation flowchart, purchase sequence
diagram, and website screenshots. To regenerate them:
python report/make_diagrams.py # diagrams
python report/take_screenshots.py # screenshots (app must be running; run seed.py afterwards)
campuskart/
├── app.py Flask routes (auth, search, products, orders, admin)
├── schema.sql tables, indexes, triggers, views
├── seed.py demo data (users, 58 products, histories, orders)
├── test_app.py automated tests
├── ai/
│ ├── recommender.py AI 1: TF-IDF recommendations
│ ├── price_predictor.py AI 2: linear regression pricing
│ └── spam_detector.py AI 3: Naive Bayes spam filter
├── templates/ HTML pages (Jinja2)
└── static/style.css styling (no external CSS framework)