-
Notifications
You must be signed in to change notification settings - Fork 0
Backend Research
API FRAMEWORKS RESEARCH (see the related issue)
Key Features:
- Built-in authentication (OAuth2, JWT) and permission handling.
- Built-in API browsing
- Integrates tightly with Django ORM
- Automatic API documentation generation tools
Pros:
- Quick set up and fast development cycles
- Ease of use for CRUD-heavy operations
- Simplified database design due to ORM
Cons:
- Tightly coupled to Django.
Sample Code:
from rest_framework.views import APIView
from rest_framework.response import Response
class HelloWorld(APIView):
def get(self, request):
return Response({"message": "Hello, world!"})Key Features:
- Auto-configuration: Attemps to automatically configure the application based on dependencies.
- Excellent dependency management
- Built-in metrics, and health checks.
Pros:
- Highly scalable for large enterprise applications
- Strong type safety (due to Java)
- Excellent tooling support (IDEs)
Cons:
- Verbose compared to Python
- More boilerplate and configuration.
Sample Code:
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, world!";
}
}We have used Django due to its simplicity and lightweight setup. It also have great support for PostgreSQL, offering seamless integration through its ORM.
DATABASE RESEARCH (see the related issue)
-
Both MySQL and PostgreSQL are implementations of SQL. Syntactically, they are almost identical. Despite this, many consider PostgreSQL to be a more advanced database than MySQL — while MySQL is easier, has a lower barrier to entry, and greater levels of adoption. ( GPT does not agree with this, here is its answer when I ask him about the ease of these platforms: 'Not really. Both are about equally easy (or hard) to learn at the beginner level. The real difference comes later, as your app grows and you need more from your database.' )
-
PostgreSQL is an object-based relational database rather than just a relational database, and many of its advanced features relate to this. However, many developers and analysts will never need these advanced features.
-
MySQL is a purely relational database. PostgreSQL, on the other hand, is an object-relational database. This means that in PostgreSQL, you can store data as objects with properties. Objects are a common data type in many programming languages like Java and .NET. Objects support paradigms like parent-child relationships and inheritance. ( I believe this could be crucial for us.)
-
MySQL is more suitable for beginners and has a shorter learning curve. It takes less time to build a new database project from scratch. It’s simple to set up MySQL as a standalone product or bundle it with other web development technologies like the LAMP stack.
-
Since you're learning, planning for growth, and might deal with some evolving data structures (e.g., tracking challenges and logs), PostgreSQL gives you more flexibility and room to grow without complexity.
ChatGPT
We have decided to go with PostgreSQL due to its integration with other frameworks and its OOP properties.
TESTING TOOLS RESEARCH (see the related issue)
This project uses a modern and robust testing stack to ensure the quality and reliability of the Django REST API. Below is a summary of the testing tools integrated or recommended for use.
A powerful, expressive, and widely adopted test runner for Python. Offers clean syntax, powerful fixtures, and a rich plugin ecosystem.
Enables smooth integration of pytest with Django projects. Handles test databases, Django settings, and ORM access seamlessly.
Includes:
-
APITestCase: Extends Django'sTestCasewith API-specific assertions. -
APIClient: A client that simulates HTTP requests to DRF views, including full routing, authentication, and middleware support.
pytest-drf (optional)
Provides test layering and structural organization for DRF views, serializers, and endpoints in pytest style. Useful for large codebases.
A fixtures replacement tool that generates valid model instances using factory patterns. Works with Django ORM and Faker.
Integrates factory_boy with pytest, turning factories into fixtures (user, post, etc.) for clean and reusable test data.
Mocks out calls made via the requests library, enabling you to test API integrations without hitting real external services.
Built-in Python library for patching and mocking objects, functions, or methods. Useful for isolating logic and mocking internal dependencies.
Provides test coverage reports when running pytest. Supports terminal, HTML, XML, and fail-under thresholds.
pytest --cov=your_app --cov-report=term-missingWe have decided to use pytest.
- Lab1
- Lab 1 Meeting Notes
- Lab2
- Lab 2 Meeting Notes
- Lab3
- Lab 3 Meeting Notes
- Lab4
- Lab4 Meeting Notes
- Lab5
- Lab5 Meeting Notes
- Lab 5: MVP Implementation & Planning
- Lab6
- Lab6 Meeting Notes
- Lab7
- Lab7 Meeting Notes
- Lab 7: Milestone 2 Demo Preparation
- Lab8
- Lab8 Meeting Notes
- Lab 8: Requirements Review & Acceptance Planning
- Ahmet's Bio
- Barathan's Bio
- Berkay's Bio
- Berke's Bio
- Caglar's Bio
- Mehmet Emin's Bio
- Nilsu's Bio
- Ömer's Bio
- Selman's Bio
- Taha's Bio
Ahmet Okta
Barathan Aslan
Berke Kartal
Mehmet Çağlar Kurt
Mehmet Emin Atak
Muhammet Berkay Keskin
Mustafa Taha Söylemez
Nilsu Tüysüz
Selman Akman
Ömer Faruk Bayram
- Use Case Diagram
- Class Diagram
- Sequence Diagrams - Admin Management and Moderator Functions
- Sequence Diagrams - Rewards, Badges and Leaderboard System
- Sequence Diagrams - Notification System
- Sequence Diagrams - Tips and Recommendations
- Sequence Diagrams - Challenge and Activity Tracking
- Sequence Diagrams - Waste Tracking and Scoring System
- Sequence Diagrams - User and Account Management
- Sequence Diagrams - Goal Management
- Sequence Diagrams - Authentication
- Sequence Diagrams - Session Management
- Sequence Diagrams - Events Management
- Project Plan
- Requirements
- Elicitation Questions & Answers
- Scenario #1
- Scenario #2
- Scenario #3
- Scenario #4
- Scenario #5
- Scenario #6
- Scenario #7
- Scenario #8
- Scenario #9
- Scenario #10
- Scenario #11
- Scenario #12
- Scenario #13
- Scenario #14
- Use Case Diagram
- Class Diagram
- Sequence Diagrams - Admin Management and Moderator Functions
- Sequence Diagrams - Rewards,Badges and Leaderboard System
- Sequence Diagrams - Notification System
- Sequence Diagrams - Tips and Recommendations
- Sequence Diagrams - Challenge and Activity Tracking
- Sequence Diagrams - Waste Tracking and Scoring System
- Sequence Diagrams - User and Account Management
- Sequence Diagrams - Goal Management
- Sequence Diagrams - Auth
- Sequence Diagrams - Session Management
- User Manual for Frontend-Web
- System Manual for Frontend-Web
- Research Documentation for Frontend-Web
- Testing Manual for Frontend-Web