📅 A To-do List in a Calendar
This project is my first try to create an organized application, with documentation and good pratices. I've applied in this API concepts about clean code, RESTful API, PEP8 and PEP257.
Hosting
I've hosted this project in render.com, because it's free and no need credit card. It's can be access in: https://todo365.onrender.com/api/
DRF Swagger
Using drf-yasg I've created a swagger explaining any types of possible requests.
Diagrams
Here are all the project diagrams, I tried to explain their functionalities and relationships.
Models and Serializers Class Diagrams
classDiagram
User <|-- UserSerializer : inheritance
User o-- "0..*" Task : create
Task <|-- TaskSerializer : inheritance
note for User "This class have a inheritance in AbstractUser from django.contrib.auth.models"
class User{
# user_email: EmailField
# validated: BooleanField default=False
# tasks: dict ~task objects~
+ __str__() str
}
class Task{
# title: CharField
# description: CharField
# datetime: DatetimeField
# ForeignKey(User) IntegerField
+ __str__() string
}
class TaskSerializer{
- Meta
+ validate_datetime(value) ValidationError
}
class UserSerializer{
+ create(validated_data) User
}
Custom Permission Class Diagram
classDiagram
direction RL
note for IsAdmin "inheritance in BasePermission"
class IsAdmin{
# has_permission() bool
}
Views Class Diagrams
classDiagram
note for HealthCheckView "inheritance in generics.ListAPIView"
class HealthCheckView{
- get() dict ~status~
}
classDiagram
note for TaskDetail "inheritance in generics.RetrieveUpdateDestroyAPIView"
class TaskDetail{
- serializer_class: TaskSerialiazer
- permission_classes: list ~permissions~
- get_queryset() Task object
}
classDiagram
note for TaskList "inheritance in generics.ListCreateAPIView"
class TaskList{
- serializer_class: TaskSerialiazer
- permission_classes: list ~permissions~
- get_queryset() Task objects
- perform_create() Task serializer save
}
classDiagram
BaseUserCreate <|-- UserCreate : inheritance
BaseUserCreate <|-- UserAdminCreate : inheritance
note for BaseUserCreate "inheritance in generics.CreateAPIView"
class BaseUserCreate{
# serializer_class: UserSerialiazer
# queryset: User objects
# perform_create() User serializer save
}
class UserCreate{
- perform_create() User serializer save
}
class UserAdminCreate{
-perform_create() User serializer save
}
classDiagram
note for UserList "inheritance in generics.ListAPIView"
class UserList{
- serializer_class: UserSerialiazer
- permission_classes: list ~permissions~
- get_queryset() User objects
}
classDiagram
note for UserDetailAdmin "inheritance in generics.RetrieveUpdateDestroyAPIView"
class UserDetailAdmin{
- serializer_class: UserSerialiazer
- permission_classes: list ~permissions~
- queryset: User objects
}
classDiagram
note for UserDetail "inheritance in generics.RetrieveUpdateAPIView"
class UserDetail{
- serializer_class: UserSerialiazer
- queryset: User objects
- get_object() self User
}
classDiagram
note for VerifyEmailToken "inheritance in rest_framework.views.APIView"
class VerifyEmailToken{
- serializer_class: UserSerialiazer
- get serializer.data
}