FloCafe
FloCafe는 구독 없이 무료로 주문·테이블·주방 디스플레이·로컬 데이터를 관리하는 로컬 퍼스트 레스토랑 POS입니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A real-estate marketplace for the Philippines — PRC-verified agents, reviewed listings, 360° virtual tours, real-time buyer↔agent chat, and an AI assistant that answers buyers while an agent is offline.
realtylinkph-backend)realtylinkph-frontend)| Tool | Version | Notes |
|---|---|---|
| PHP | 8.2+ | with openssl pdo_pgsql pgsql mbstring fileinfo curl zip sodium |
| Composer | 2.x | |
| Node.js | 20+ | |
| PostgreSQL | 14+ | |
| Git | any |
PHP extensions matter. Check with php -m. If pdo_pgsql is missing the
app cannot reach the database at all. On Windows, uncomment the matching
extension= lines in php.ini — the standalone Windows build of PHP ships
no php.ini at all, so you may need to copy php.ini-development to
php.ini first.
PHP also needs a CA bundle on Windows, or every outbound HTTPS call fails
with cURL error 60 — that silently breaks Google sign-in, Gemini, Groq,
Geoapify and email all at once. Download https://curl.se/ca/cacert.pem and
point php.ini at it:
curl.cainfo = "C:\php\extras\ssl\cacert.pem"
openssl.cafile = "C:\php\extras\ssl\cacert.pem"
Two more php.ini values, or listing-photo uploads fail confusingly:
upload_max_filesize = 12M
post_max_size = 20M
git clone https://github.com/codex0315-oss/realtylinkph.git
cd realtylinkph
createdb realtylinkph # or: CREATE DATABASE realtylinkph; in psql
cd realtylinkph-backend
composer install
cp .env.example .env # Windows: copy .env.example .env
php artisan key:generate
Open .env and fill in at minimum:
DB_PASSWORD — your local Postgres passwordREVERB_APP_ID, REVERB_APP_KEY, REVERB_APP_SECRET — any random stringsGROQ_API_KEY / GEMINI_API_KEY — for the AI featuresGEOAPIFY_KEY — for mapsGOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET — for "Continue with Google"Everything else has a working default. For email, MAIL_MAILER=log writes
messages to storage/logs/laravel.log instead of sending them — fine for dev.
Then:
php artisan migrate --seed
php artisan storage:link # makes uploaded photos reachable at /storage/...
cd ../realtylinkph-frontend
npm install
cp .env.example .env # Windows: copy .env.example .env
⚠️ NUXT_PUBLIC_REVERB_KEY must equal the backend's REVERB_APP_KEY, and
the host/port must match too. If they differ, everything still loads but
real-time chat, typing indicators and notifications quietly stop working.
Four processes. Use four terminals (or a tool like concurrently):
# 1 — API
cd realtylinkph-backend && php artisan serve
# 2 — websockets (real-time chat + notifications)
cd realtylinkph-backend && php artisan reverb:start
# 3 — queue worker (emails, AI auto-replies)
cd realtylinkph-backend && php artisan queue:listen
# 4 — frontend
cd realtylinkph-frontend && npm run dev
Open http://localhost:3000.
queue:listen and not queue:workqueue:work loads your PHP classes once at startup and never re-reads them,
so after any backend edit it keeps running the old code — jobs then fail with
confusing "undefined method" errors. queue:listen boots a fresh process per
job, so it always runs current code. Slightly slower per job; irrelevant locally.
cd realtylinkph-backend && php artisan schedule:work
Runs two hourly jobs: the homepage ranking refresh, and deleting the documents of rejected agent applications once their re-apply cooldown lapses. The app works without it; those two just don't happen on their own.
php artisan migrate --seed creates accounts that all share the password
password123:
| Role | |
|---|---|
| Admin | [email protected] |
The seeder prints the rest when it runs.
| Symptom | Cause |
|---|---|
could not find driver | pdo_pgsql not enabled in php.ini |
cURL error 60 on Google / AI / email | No CA bundle — see Prerequisites |
| Messages only appear after a refresh | Reverb not running, or the Reverb key/host differ between the two .env files |
| Emails and AI replies never happen | No queue worker running |
| Photo upload fails with no clear error | upload_max_filesize / post_max_size too low in php.ini |
Blank page after npm run dev | Frontend .env missing — copy it from .env.example |
By design, none of these are committed:
.env files — they hold the DB password, Google OAuth secret, SMTP
password and the AI/map API keys. Use .env.example as your template.*.sql) — they contain real user emails and password hashes.storage/app/public/ — uploaded listing photos and, more importantly,
agents' government IDs, licence cards and live face scans. A fresh clone
starts with empty upload folders, which is correct.