Calories Calculator API

A FastAPI-based API for tracking calories and nutritional information. This application allows users to register, track their food intake, and calculate their recommended calorie intake based on personal metrics.

Features

  • User registration and authentication
  • Food database management
  • Calorie tracking by meal type
  • Daily and weekly calorie summaries
  • BMR (Basal Metabolic Rate) and TDEE (Total Daily Energy Expenditure) calculations
  • Personalized calorie recommendations based on goals

Getting Started

Prerequisites

  • Python 3.8+
  • SQLite

Installation

  1. Clone the repository:
git clone <repository-url>
cd caloriescalculatorapi
  1. Install dependencies:
pip install -r requirements.txt
  1. Run database migrations:
alembic upgrade head
  1. Start the application:
uvicorn main:app --reload

The API will be available at http://localhost:8000.

API Documentation

Once the application is running, you can access the interactive API documentation at:

API Endpoints

Authentication

  • POST /api/v1/auth/register - Register a new user
  • POST /api/v1/auth/login - Login and get access token
  • POST /api/v1/auth/test-token - Test if the token is valid

Users

  • GET /api/v1/users/me - Get current user data
  • PUT /api/v1/users/me - Update current user data

Foods

  • GET /api/v1/foods - List food items
  • POST /api/v1/foods - Create a new food item
  • GET /api/v1/foods/{food_id} - Get a specific food item
  • PUT /api/v1/foods/{food_id} - Update a food item
  • DELETE /api/v1/foods/{food_id} - Delete a food item
  • GET /api/v1/foods/my-foods - List food items created by the current user

Calorie Entries

  • GET /api/v1/calorie-entries - List calorie entries
  • POST /api/v1/calorie-entries - Create a new calorie entry
  • GET /api/v1/calorie-entries/{entry_id} - Get a specific calorie entry
  • PUT /api/v1/calorie-entries/{entry_id} - Update a calorie entry
  • DELETE /api/v1/calorie-entries/{entry_id} - Delete a calorie entry
  • GET /api/v1/calorie-entries/daily-summary - Get daily calorie summary
  • GET /api/v1/calorie-entries/weekly-summary - Get weekly calorie summary

Calculator

  • POST /api/v1/calculator/calculate - Calculate recommended calories
  • GET /api/v1/calculator/calculate-from-profile - Calculate recommended calories based on user profile

Project Structure

app/
├── api/                  # API endpoints
│   └── v1/              
│       ├── endpoints/    # API route handlers
│       └── api.py        # API router configuration
├── core/                 # Core functionality
│   ├── config.py         # Application configuration
│   ├── deps.py           # Dependencies
│   └── security.py       # Security utilities
├── db/                   # Database configuration
│   ├── base.py           # SQLAlchemy Base class
│   └── session.py        # Database session setup
├── models/               # SQLAlchemy models
├── schemas/              # Pydantic schemas
├── services/             # Business logic
└── utils/                # Utility functions
migrations/               # Alembic migrations
main.py                   # Application entry point

Development

Running Tests

pytest

Running Linters

ruff check .

License

This project is licensed under the MIT License.

Description
Project: Calories Calculator API
Readme 58 KiB
Languages
Python 99.2%
Mako 0.8%