https://github.com/wil-jsdev/metabond-backend
https://github.com/wil-jsdev/metabond-backend
asp-net-core docker postgresql social-media
Last synced: 8 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/wil-jsdev/metabond-backend
- Owner: Wil-JsDev
- License: mit
- Created: 2025-01-12T22:53:40.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-10T19:29:55.000Z (about 1 year ago)
- Last Synced: 2025-04-10T20:42:10.577Z (about 1 year ago)
- Topics: asp-net-core, docker, postgresql, social-media
- Language: C#
- Homepage:
- Size: 374 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: Readme.md
- License: License
Awesome Lists containing this project
README
# MetaBond API ๐
[](https://dotnet.microsoft.com/)
[](https://docs.microsoft.com/en-us/dotnet/csharp/)
[](https://railway.app/)
## ๐ Description
MetaBond is a **modern social platform API** designed to build communities where users connect not only with people but
also with **goals, interests, and specific projects**.
Users can create or join communities based on common objectives such as:
- ๐ Learning new skills (languages, programming, etc.)
- ๐ Developing startups and business ventures
- ๐ Organizing events and social activities
- ๐ช Fitness and wellness goals
- ๐จ Creative projects and collaborations
The platform enhances user interaction through **gamification tools**, real-time features, and intelligent resource
matching.
## โจ Key Features
### ๐๏ธ Community Management
- Create and manage communities with category-based organization
- Community discovery through interests and categories
- Member management and role-based permissions
- Community analytics and insights
### ๐
Event Planning
- Create and manage community events
- Event categorization and filtering
- RSVP management and attendee tracking
- Event discovery and recommendations
### ๐ค User Interests & Categories
- Interest-based user profiling
- Category management for communities and interests
- Smart matching algorithms
- Personalized content recommendations
### ๐ Progress Tracking
- Goal-oriented progress boards
- Achievement tracking and milestones
- Gamification elements
- Personal and community metrics
### ๐ฌ Social Features
- User-generated posts within communities
- Community membership management
- Social interactions and engagement tools
## ๐ ๏ธ Technology Stack
### Backend Framework
- **Framework**: .NET 8.0
- **Language**: C# 12.0
- **Architecture**: Clean Architecture + CQRS Pattern
### Data & Persistence
- **ORM**: Entity Framework Core
- **Database**: PostgreSQL + PgAdmin
- **Migrations**: EF Core Migrations
### API & Documentation
- **API Style**: RESTful Web API
- **Documentation**: Swagger/OpenAPI 3.0
- **Versioning**: API versioning support (v1)
### Validation & Testing
- **Validation**: FluentValidation
- **Testing Framework**: xUnit
- **Test Types**: Unit Tests, Integration Tests
### Architecture Patterns
- **Dependency Injection**: Built-in .NET DI Container
- **CQRS**: Command Query Responsibility Segregation
- **Repository Pattern**: Data access abstraction
- **Result Pattern**: Error handling and response wrapping
- **Mediator Pattern**: MediatR for request handling
## ๐ Getting Started
### Prerequisites
- .NET 8.0 SDK
- SQL Server (LocalDB or full instance)
- Visual Studio 2022 or VS Code
- Git
### Installation
1. **Clone the repository**
```bash
git clone [repository-url]
cd MetaBond-Backend
```
2. **Restore dependencies**
```bash
dotnet restore
```
3. **Update database connection string**
```bash
cp .env.template .env
# Edit .env file with your database connection string
```
4. **Run database migrations**
```bash
dotnet ef database update --project MetaBond.Infrastructure.Persistence
```
5. **Run the application**
```bash
dotnet run --project MetaBond.Presentation.Api
```
6. **Access the API**
- API: `https://localhost:7001`
- Swagger UI: `https://localhost:7001/swagger`
### Using Docker
1. **Run Docker Compose**
```bash
docker-compose up
```
## ๐ API Endpoints
### Communities
- `GET /api/v1/communities` - Get paginated communities
- `POST /api/v1/communities` - Create new community
- `GET /api/v1/communities/{id}` - Get community by ID
- `PUT /api/v1/communities/{id}` - Update community
- `DELETE /api/v1/communities/{id}` - Delete community
- `GET /api/v1/communities/category/{categoryId}` - Get communities by category
*For complete API documentation, visit `/swagger` when running the application.*
## ๐งช Testing
### Run all tests
```bash
dotnet test
```
### Run specific test project
```bash
dotnet test MetaBond.Tests
```
### Test coverage
```bash
dotnet test --collect:"XPlat Code Coverage"
```
## ๐ Project Structure
For detailed information about the project architecture, see [ARCHITECTURE.md](./ARCHITECTURE.md)
```
MetaBond-Backend/
โโโ ๐ MetaBond.Domain/ # Business entities and rules
โโโ ๐ MetaBond.Application/ # Business logic and use cases
โโโ ๐ MetaBond.Infrastructure.Persistence/ # Data access implementations
โโโ ๐ MetaBond.Infrastructure.Shared/ # Shared services and utilities
โโโ ๐ MetaBond.Presentation.Api/ # Web API controllers and configuration
โโโ ๐ MetaBond.Tests/ # Test suites
โโโ ๐ณ docker-compose.yml # Docker configuration
โโโ ๐ .env.template # Environment variables template
โโโ ๐ ARCHITECTURE.md # Detailed architecture documentation
```
## ๐ Deployment
### Railway (Current)
The backend is currently deployed on **Railway** with automatic deployments from the main branch.
- **Production URL**: [Production Railway URL]
- **Swagger Documentation**: [Production URL]/swagger
### Alternative Deployment Options
- **Azure App Service**: Recommended for enterprise deployments
- **AWS ECS/Fargate**: For containerized deployments
- **Docker**: Self-hosted with Docker Compose
- **Kubernetes**: For large-scale deployments
## Development Status
- [x] Community Management System
- [x] Event Management System
- [x] Category-based Organization
- [x] Interest Management
- [x] API Documentation
- [x] Unit Testing Framework
- [ ] Authentication & Authorization (In Progress)
- [ ] Real-time Features (Planned)
- [ ] Gamification System (Planned)
- [ ] Notification System (Planned)
---
**Built with โค๏ธ using .NET 8 and Clean Architecture principles**