StructoMate is a comprehensive building management application designed to simplify managing tenants, agreements, announcements, payments, and more in a single-building environment.
- User Management: Add, update, and manage users and their roles (admin, member, user).
- Agreements: Handle agreements for members and users, including creation, acceptance, and rejection.
- Payments: Secure payment processing using Stripe for monthly rent collection.
- Coupons: Manage promotional coupons with CRUD functionality.
- Announcements: Post and retrieve announcements for users, members, or both.
- Apartments: View available apartments and their details.
- POST
/api/login
: Login user and return a JWT. - POST
/api/logout
: Logout user.
- POST
/api/create-payment-intent
: Create a Stripe payment intent (requires JWT).
- POST
/api/admin
: Fetch admin dashboard data (requires JWT). - POST
/api/manageMembers
: Get all members (requires JWT). - POST
/api/change/role
: Change user role (requires JWT).
- POST
/api/get/coupons
: Get all coupons (requires JWT). - POST
/api/create/coupons
: Create a new coupon (requires JWT). - POST
/api/delete/coupons
: Delete a coupon (requires JWT).
- POST
/api/get/userAnnouncement
: Get user announcements (requires JWT). - POST
/api/get/memberAnnouncement
: Get member announcements (requires JWT). - POST
/api/makeAnnouncement
: Create a new announcement (requires JWT).
- POST
/api/users/agreements
: Get user's pending agreements (requires JWT). - POST
/api/member/agreements
: Get member's checked agreements (requires JWT). - POST
/api/pending/agreements
: Get all pending agreements (requires JWT). - POST
/api/accept/agreements
: Accept an agreement (requires JWT). - POST
/api/reject/agreements
: Reject an agreement (requires JWT). - POST
/api/create/agreements
: Create a new agreement (requires JWT).
- GET
/api/apartments
: Get all apartments. - GET
/api/apartments/:id
: Get an apartment by ID.
- GET
/api/users/exists/:email
: Check if a user exists. - POST
/api/users/:email
: Get user data by email (requires JWT). - POST
/api/users
: Create a new user.
root
├── public
│ └── favicon.webp
├── .gitignore
├── .env
├── index.js
├── LICENSE
├── package.json
├── package-lock.json
└── Readme.md
└── vercel.json
- Node.js (v14 or higher)
- MongoDB (local or cloud instance)
-
Clone the repository:
git clone https://github.com/Ajmain-Fayek/StructoMate-server.git cd StructoMate-server
-
Install dependencies:
npm install
-
Set up environment variables:
-
Create a
.env
file in the root directory. -
Add the following variables:
PORT=5000 MONGO_URI=<your-mongodb-connection-string> STRIPE_SECRET_KEY=<your-stripe-secret-key> STRIPE_WEBHOOK_SECRET=<your-stripe-webhook-secret> JWT_SECRET=<your-jwt-secret>
-
-
Start the development server:
npm run dev
-
Open the app in your browser at
http://localhost:<port>
.
- Admins can manage users, agreements, and announcements.
- Members can view and accept agreements, make payments, and view announcements.
- The app provides a dashboard for easy navigation and management.
- Frontend: React.js, TailwindCSS
- Backend: Node.js, Express.js
- Database: MongoDB
- Authentication: JWT (JSON Web Tokens)
- Payment Integration: Stripe
We welcome contributions! Please follow these steps:
- Fork the repository.
- Create a feature branch:
git checkout -b feature-name
. - Commit your changes:
git commit -m "Add new feature"
. - Push to the branch:
git push origin feature-name
. - Open a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.