Giter VIP home page Giter VIP logo

minhashoras.api's Introduction

MinhasHoras.API

Documentation Status Maintainability

Project documentation available at MinhasHoras.docs.

MinhasHoras.API is a Python API built using the Django framework, designed to help track the time spent on clients, projects, and tasks. This API will serve a web client that aims to provide a simple solution for managing time where users can register clients, projects, tasks, log the time spent on each activity, and generate reports on the total time spent per client, project, task, etc.

Disclaimer

This project serves as a laboratory for the implementation of best practices in software project design and development. This project focuses particularly on the development of APIs using Python and Django. Our primary objective is to create a well-structured and maintainable codebase, ensuring the use of effective coding standards and techniques.

Please note that this application is a work in progress, and is not yet a finished product. It is continuously being refined and improved, with a strong emphasis on implementing and experimenting with best practices in the software development lifecycle.

Project Goals

  1. Demonstrate the application of best practices in project management and software development.
  2. Create a scalable, maintainable, and efficient codebase using Python and Django.
  3. Design and develop APIs adhering to RESTful principles and other widely accepted standards.

Current Status

This project is currently under active development. Contributions, suggestions, and feedback are welcomed and appreciated. As we work on refining and expanding the application, we will continue to apply and explore best practices to ensure the highest quality of code and functionality.

As a reminder, this application is not a finished product, and its primary purpose is to serve as a learning and experimentation platform for developers interested in honing their skills and understanding of best practices in software development, particularly in the context of Python, Django, and API development.

Thank you for visiting our project repository. We hope you find it useful and informative, and we welcome your contributions to our ongoing journey towards

Main Features

  • Register clients, projects, and tasks
  • Log time spent on each activity
  • Generate time reports by client, project, task, and more

Installation

This project uses PIP for dependency management. Make sure you have Python and PIP installed on your machine. Then, follow the steps below to set up the TimeTrackingAPI:

  1. Clone this repository:
git clone https://github.com/alcfernandes/minhashoras.api.git minhashoras-api
  1. Navigate to the project directory:
cd minhashoras-api
  1. Create a virtual environment:
python -m venv venv
  1. Activate the virtual environment:
  • On Windows:

    .\venv\Scripts\activate
    
  • On Linux/MacOS:

    source venv/bin/activate
    
  1. Install the dependencies:
pip install -r requirements/local.txt
  1. Apply migrations:
python manage.py migrate
  1. Run the development server:
python manage.py runserver

The API should now be running on http://127.0.0.1:8000/.

Admin themes

The package django-admin-interface ships with optional themes as fixtures, they can be installed using the loaddata admin command. Optional themes are activated on installation.

Django theme (default):

Run python manage.py loaddata admin_interface_theme_django.json

Bootstrap theme:

Run python manage.py loaddata admin_interface_theme_bootstrap.json

Foundation theme:

Run python manage.py loaddata admin_interface_theme_foundation.json

Run python manage.py loaddata admin_interface_theme_uswds.json

Usage

Please refer to the API documentation (available at /api/schema/swagger-ui/ when running the development server) for detailed information on how to use the Minhashoras API, including available endpoints and required parameters.

License

This project is licensed under the MIT License - see the LICENSE file for details.

minhashoras.api's People

Contributors

alcfernandes avatar

Watchers

 avatar

minhashoras.api's Issues

Create and Publish Base API

alcfernandes/minhashoras.project#3

  • Criar ambiente virtual Python com última versão do Python
  • Criar projeto Django Básico usando última versão do Django
  • Implementar leitura de variáveis de ambiente (Usar django-environ)
  • Usar Postgres
  • Configurar estrutura de documentação já com um glossário (usar o MKDocs)
  • Usar customização do Admin do Django
  • Criar o app accounts para a gestão de usuários
  • Testes configurados com Pytest (Ver pytest-django)
  • Testes rodando com coverage (Ver pytest-cov)
  • Lint configurado (usar Blue? Talvez o Isort?)
  • Criar API inicial com endpoint /version retornando 0.1.0
  • Configurar Swegger
  • #7
  • Install and configure AuditLog
  • Publicar API em algum serviço remoto respondendo aos endereços /api/version e /admin
  • Definir esquema de versionamento (baseado em calendário, semântica, outra)
  • Vincular Code Climate
  • Definir licença
  • Subir uma documentação base no readthedocs

Configure lints

  • Install blue
  • Config PyCharm do use blue
  • Install isort
  • Config PyCharm do use isort

Account's clients management

An authenticated API client, using HTTP requests, should be able to manage Account's Clients.

Should be possible to:

  • List clients of user's account
  • Choose to show or not show inactive (archived) clients in the list
  • Retrieve a client from user's account
  • Create a client in user's account
  • Update a client in user's account
  • Delete a client in user's account
  • Archive a client in user's account
  • Unarchive a client in user's account

Should NOT be possible to:

  • Access, create, update, or delete clients from other accounts

Config authentication by e-mail

The goal here is to create an endpoint for authenticating API users:

  • Users must log in using an email on the admin site.
  • Users must obtain access and refresh tokens from the /api/token endpoint.

Config Unit Tests with PyTest and Coverage

To do:

  • Install Pytest and create a test for the API version endpoint.
  • Check if pytest-django is installed, and if not, install it.
  • Install pytest-cov to measure test coverage.
  • Install pytest-factoryboy
  • Install faker
  • Install freezegun

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.