# AboSeir Gateway
AboSeir Gateway is an online marketplace for classified ads in Egypt, which can be configured for all countries worldwide. It allows users to browse, post, and communicate about ads, with tools for account management and content moderation.
## Features
### Ads and Browsing
- Browse ads by category, search by title and keywords with auto-suggestions.
- Detailed ad pages including images, description, price, location, and property information when available.
- Post ads and manage their status from the user dashboard, with ads reviewed before publishing.
- Display contact methods chosen by the advertiser, with tracking of call and WhatsApp clicks.
- Report ads that violate policies or are fraudulent.
### Accounts and Communication
- Create an account, log in, and manage profile, ads, favorites, and payments.
- Add comments to ads without an account, and reply to comments after logging in.
- In-app notifications for the advertiser when a comment is added, and for the registered commenter when a reply is received.
- Private chats between the advertiser and interested parties, with messages saved in MongoDB and real-time updates via Pusher Channels.
- Private Pusher channels; users cannot open a chat or channel belonging to another user.
### Administration
- Review ads, reports, and payments, and manage users.
- Manage team member permissions available for the super admin, with logging of administrative actions.
- Platform settings, featured ads, and manual transfers via InstabPay or Vodafone Cash are available for the super admin. Transfers are reviewed manually before the ad is featured and published.
## Technologies
| Field | Technology |
| - | - |
| Frontend and Rendering | Next.js 16 App Router and React 19 |
| Language and Styling | TypeScript and Tailwind CSS 4 |
| Authentication | Better Auth |
| Databases | MongoDB via Prisma for authentication and Mongoose for the rest of the application data |
| Search | Meilisearch optional, falling back to MongoDB when unavailable |
| Instant Messaging | Pusher Channels and Pusher JS |
| Image Storage | MongoDB GridFS |
Conversations, messages, and notifications are saved in MongoDB. Pusher is used for instant delivery of message and notification events, and the conversation is updated periodically as needed. Initiating a conversation requires full Pusher setup.