Skip to content
Enes Yesil edited this page Jan 15, 2025 · 1 revision

Welcome to the backenderer wiki!

Project Structure

This page outlines the structure of the Backend Platform project. It serves as a guide to understanding the organization of files, folders, and components within the repository.


Root Directory

The root directory contains the core project files and configuration.

/ 
├── terraform/               # Terraform configurations for IaC
├── sample-apps/             # Sample applications to demonstrate platform usage
├── src/                     # Source code for the platform backend
├── docs/                    # Documentation files (e.g., architecture diagrams, guides)
├── cli/                     # CLI tool for interacting with the platform
├── .env                     # Environment configuration file (not committed)
├── .gitignore               # Git ignore rules
├── README.md                # Project overview and setup instructions

Directory Breakdown

terraform/

Contains Terraform configuration files to provision AWS infrastructure.

terraform/
├── main.tf                  # Entry point for Terraform configuration
├── variables.tf             # Defines input variables for Terraform
├── outputs.tf               # Outputs for Terraform resources
├── modules/                 # Reusable Terraform modules
│   ├── vpc/                 # VPC configuration module
│   ├── ecs/                 # ECS configuration module
│   ├── rds/                 # RDS configuration module
│   └── s3/                  # S3 configuration module

sample-apps/

Sample backend applications for testing and demonstrating platform capabilities.

sample-apps/
├── spring-boot-app/         # A Spring Boot sample application
│   ├── Dockerfile           # Dockerfile to build the Spring Boot app
│   └── src/                 # Application source code
├── flask-app/               # (Planned) Flask sample application
└── django-app/              # (Planned) Django sample application

src/

The source code for the platform backend, built using Spring Boot.

src/
├── main/java/com/platform/  # Main Java source code
│   ├── adapters/            # Framework-specific adapters (e.g., Spring Boot, Flask)
│   ├── api/                 # REST API controllers
│   ├── services/            # Business logic and application services
│   ├── utils/               # Utility classes and helpers
│   └── Application.java     # Main entry point for the backend application
├── main/resources/          # Configuration files (e.g., application.yml)
├── test/                    # Unit and integration tests

docs/

Documentation files to help users and developers understand the project.

docs/
├── architecture-diagram.png # High-level architecture diagram
├── usage-guide.md           # Step-by-step usage guide
├── faq.md                   # Frequently asked questions
└── contributing.md          # Contributor guidelines

cli/

The command-line interface (CLI) tool for interacting with the platform.

cli/
├── bin/                     # Executable scripts
├── src/                     # CLI source code
├── package.json             # Node.js dependencies and scripts
└── README.md                # Instructions for using the CLI

Key Files

.env

Environment configuration file for sensitive variables (e.g., AWS credentials, API keys). This file should not be committed to the repository.

.gitignore

Defines files and folders to exclude from version control.

README.md

The main entry point for understanding the project, containing an overview, setup instructions, and usage examples.


Extending the Project Structure

To extend the project for new features or frameworks:

  1. Add new framework adapters in src/main/java/com/platform/adapters.
  2. Create new sample apps in sample-apps/ to demonstrate usage.
  3. Update Terraform modules in terraform/modules to provision required resources.
  4. Document changes in docs/ to ensure consistency and clarity.

For further details, refer to the Contributing Guide.