FloCafe
FloCafe는 구독 없이 무료로 주문·테이블·주방 디스플레이·로컬 데이터를 관리하는 로컬 퍼스트 레스토랑 POS입니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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)