Sistema 1: E-commerce Microservices Platform

Objetivos

Aprender conceitos de backend, frontend e DevOps desenvolvendo um sistema full-stack.

Descrição técnica do projeto

Overview: Build a small e-commerce platform with services such as:

Tasks for the mentee:

Semana 1

Tarefa

Teoria

Semana 2

Tarefa

Teoria

Semana 3

Tarefa

Teoria

Semana 4

Tarefa

Teoria

Semana 5

Tarefa

Teoria

Sistema 2: AWS - Site estático

Semana 6

Tarefa

Teoria

Sistema 3: Task Management Application

High-Level Overview

This project is a task management application designed to allow users to manage their daily tasks with features like adding, updating, deleting, and categorizing tasks. Each task can have a title, description, priority, deadline, and tags (e.g., “work,” “personal”). Users will also be able to mark tasks as completed and filter tasks by category, deadline, or priority.

The system should be implemented using Python for the backend, React for the frontend, and deployed to AWS. It will focus on SOLID principles, proper API design, NoSQL database usage, and design patterns for maintainable and scalable code.

Core Functionalities

User Authentication

Task Management

Tags Management

Task Insights

High-Level Architecture

Frontend (React)

Features:

Backend (Python)

Features:

AWS Deployment

Focus on SOLID Principles

Design Patterns

AWS Services

Semana 7

Teoria

Tarefa

Task 1: Project Setup Goal: Set up the foundational structure for both the backend and frontend projects.

Backend (Python):

Initialize a Python project using FastAPI or Flask. Set up a virtual environment and install essential packages (fastapi, uvicorn, pymongo). Create a basic API endpoint (/health) to verify the backend is running. Write Dockerfile and configure for containerization.

Frontend (React):

Initialize a React project using create-react-app. Set up project structure (components, pages, utils). Create a basic homepage with a “Hello, World” message.

Testing:

Verify the frontend connects to the backend API.

Semana 8

Teoria

Tarefa

Task 2: User Authentication Goal: Implement user registration, login, and authentication using AWS Cognito.

Entrevista Técnica

Techical questions

1. “Explain how you would implement a rate limiter using the a design pattern in Python. How would this compare to other patterns you might use for the same problem?”
from functools import wraps
from time import time
from collections import defaultdict
import threading

def rate_limit(max_requests: int, window_seconds: int):
    """
    Rate limiting decorator that allows max_requests in window_seconds
    """
    lock = threading.Lock()
    requests = defaultdict(list)  # key: ip, value: list of timestamps

    def decorator(f):
        @wraps(f)
        def wrapped(request, *args, **kwargs):
            ip = request.client_ip  # assuming request has client_ip attribute
            
            with lock:
                # Clean old requests
                current = time()
                requests[ip] = [req_time for req_time in requests[ip] 
                              if current - req_time <= window_seconds]
                
                # Check if rate limit exceeded
                if len(requests[ip]) >= max_requests:
                    raise RateLimitExceeded("Too many requests")
                
                # Add new request timestamp
                requests[ip].append(current)
            
            return f(request, *args, **kwargs)
        return wrapped
    return decorator

# Usage example
@rate_limit(max_requests=100, window_seconds=60)
def some_api_endpoint(request):
    return {"status": "success"}
2. “You’re designing a social media platform’s backend. Walk me through how you would choose between SQL and NoSQL databases for different components of the system, and what specific database types you would consider.”
3. “Explain the CAP theorem and provide a real-world example where you had to make tradeoffs between consistency, availability, and partition tolerance.”
4. “You have a distributed system processing financial transactions. How would you ensure ACID properties are maintained, and what are the performance implications?”
5. “How would you implement authentication and authorization in a RESTful API? Walk through the security considerations.”
6. “You notice that your API endpoints are becoming slower over time. Walk me through your debugging process and potential solutions.”

Behavioral Questions:

1. “Tell me about a time when you had to make a significant technical decision that others disagreed with. How did you handle it?”
2. “Describe a situation where you had to deal with technical debt. How did you approach it?”
3. “Tell me about a time when you had to mentor someone who was struggling. What was your approach?”
4. “Describe a project that failed or had significant setbacks. What did you learn from it?”

Referenced in