🛒 ገበያ - Ethiopian Marketplace Telegram Mini App
# ገበያ (Gebeya) - Ethiopian Marketplace
A Telegram Mini App marketplace for buying and selling in Ethiopia.
## Features
- Telegram authentication
- Phone verification for sellers
- Create listings with photos
- Search & filter by category, price, location
- Favorites
- In-app chat
- Amharic-first UI
## Tech Stack
**Backend:** FastAPI, Python 3.12, PostgreSQL 16, SQLAlchemy (async), Redis, Alembic
**Frontend:** React 18, TypeScript, Vite 5, Tailwind CSS, Telegram Mini Apps SDK
## Telegram Bot Setup
The app runs as a Telegram Mini App. Follow these steps to set it up:
### 1. Create a Bot
1. Open @BotFather on Telegram
2. Send `/newbot` and follow the prompts to choose a name and username
3. Copy the **bot token** — you'll need it for `BOT_TOKEN`
4. Note the **bot username** (without `@`) — this is your `BOT_USERNAME`
### 2. Configure the Mini App
1. In BotFather, send `/mybots` and select your bot
2. Go to **Bot Settings** > **Menu Button** > **Configure menu button**
3. Enter your production URL (e.g., `
yourdomain.com`)
4. Send `/setmenubutton` to set the text (e.g., "Open Gebeya")
Alternatively, set the Web App URL:
1. In BotFather, send `/mybots` > select your bot
2. Go to **Bot Settings** > **Web App** > **Configure Web App URL**
3. Enter your production frontend URL
### 3. Enable Inline Mode (Optional)
If you want users to share listings via inline queries:
1. In BotFather, send `/setinline`
2. Select your bot and set a placeholder (e.g., "Search listings...")
### 4. Set Bot Commands (Optional)
Send `/setcommands` to BotFather and add:
```
start - Open the marketplace
help - Get help
```
### 5. Deep Linking
The app supports Telegram deep links for sharing listings directly:
```
t.me ?startapp=l_
```
When a user opens this link, Telegram launches the Mini App and passes the listing ID as a start parameter.
### 6. Admin Setup
Set `ADMIN_TELEGRAM_IDS` in your `.env` with comma-separated Telegram user IDs for admin access:
` …