Giter Club home page Giter Club logo

daisypets's Introduction

Daisy Pets 🐢🐱

A project for helping busy pet owners keep track of the daily, and long-term routine care of their pets.

It uses C# as the development language, and was built using the .Net 7 platform. It comprises a web api that serves a desktop application (windows forms) and a web project (Blazor Server).

It is up to the user to choose between the desktop (DaisyPets.UI), the web/blazor application (DaisyPets.Web.Blazor) or mobile app (DaisyPets.MauiPets). Just start/run the Api first, and choose wich of the projects to use ('set as the startup project').

Due to its simplicity, the SQLite database was chosen for data storage ([Structure])(https://github.com/fauxtix/DaisyPets/blob/master/MauiPetsApp/MauiPets/PetsDB.db.sql).

The ORM chosen to work with the database was Dapper, due to its ease of use and speed, especially in queries.

The front-end screenshots presented in this Read.me file are in Portuguese, but I plan to include English, French and Spanish versions for the three projects.

The web version (Blazor) already includes the four languages.

It provides mostly CRUD (Create, Read, Update, Delete) operations for Pets and other entities related to them.

For the Blazor project, the syncfusion packages (community edition) were chosen.

Key Features

  • Easy to use

  • Simple to upload documents related to the pet (medical records, for instance) and others that may apply;

  • Record vaccinations, visits to the vet, dewormers, feed dosage and documents (examination reports, blood and urine tests, and others that may apply);

  • Alerts for vaccines and application of dewormers, that may be occurring within 15 or 30 days.

  • Expenses management (with selection of categories and sub-categories);

  • Blog entries (web project) - user entries / from url's;

  • Todo lists (web project);

  • Photo gallery (desktop project, for now);

  • Contacts management;

  • Scheduler/agenda (web project).

Screenshots (Windows forms)

For the web project screenshots, navigate to Web Project 'daisypets.web.blazor'.

For the Maui project screenshots, navigate to 'MauiPetsApp'.

main Pets PetDocuments PetVaccines PetAppointments PetFood PetDewormers PetExpenses_Main PetExpenses_Editing PetContacts PetAlarms PetPhotoGallery PetLookupTables PetExpenseTypes

For the database structure and current data usage, please have a look to the .sql file in the webapi project

Requirements

Before running the Daisy Pets project, ensure that you have the following dependencies installed:

πŸ₯ Getting Started

To download and run the Daisy Pets project, follow these steps:

  1. Clone the repository to your local machine:

    git clone https://github.com/fauxtix/DaisyPets.git
  2. Navigate to the project directory:

    cd DaisyPets
  3. Build the project:

    dotnet build
  4. Apply the database migrations to create the SQLite database (if you want to use Entity Framework):

    dotnet ef database update --project DaisyPets
  5. Run the API:

    dotnet run --project DaisyPets.WebApi

The API should now be running locally on http://localhost:[PORT].

🧩 API Endpoints

The DaisyPets API provides the following endpoints:

Appointment

  • POST /api/Appointment
  • PUT /api/Appointment/{Id}
  • DELETE /api/Appointment/{Id}
  • GET /api/Appointment/{Id}
  • GET /api/Appointment/AllAppointmentsVM
  • POST /api/Appointment/ValidateAppointment

AppUtils

  • GET /api/AppUtils/BackupSqlite
  • GET /api/AppUtils/Settings/Language
  • POST /api/AppUtils/Settings/Language

Carousel (Photo gallery)

  • POST /api/Carousel
  • PUT /api/Carousel/{Id}
  • DELETE /api/Carousel/{Id}
  • GET /api/Carousel/{Id}
  • GET /api/Carousel/AllPhotosVM
  • GET /api/Carousel/PhotoVMById/{Id}
  • POST /api/Carousel/ValidatePhoto

Consulta (Veterinary encounters)

  • POST /api/Consulta
  • PUT /api/Consulta/{Id}
  • DELETE /api/Consulta/{Id}
  • GET /api/Consulta/{Id}
  • GET /api/Consulta/AllConsultaVM
  • GET /api/Consulta/ApptVMById/{Id}
  • GET /api/Consulta/PetAppointments/{Id}
  • POST /api/Consulta/ValidateAppointment

Contacts

  • POST /api/Contacts
  • PUT /api/Contacts/{Id}
  • DELETE /api/Contacts/{Id}
  • GET /api/Contacts/{Id}
  • GET /api/Contacts/AllContactsVM
  • GET /api/Contacts/ContactVMById/{Id}
  • POST /api/Contacts/ValidateContacts

Desparasitante (Dewormer)

  • POST /api/Desparasitante
  • PUT /api/Desparasitante/{Id}
  • DELETE /api/Desparasitante/{Id}
  • GET /api/Desparasitante/{Id}
  • GET /api/Desparasitante/AllWormersVM
  • GET /api/Desparasitante/desparasitanteVMById/{Id}
  • GET /api/Desparasitante/PetDewormers/{Id}
  • POST /api/Desparasitante/ValidateDesparasitantes
  • GET /api/Desparasitante/Desparasitante_Info_Pdf

Despesa (Expense)

  • POST /api/Despesa
  • PUT /api/Despesa/{Id}
  • DELETE /api/Despesa/{Id}
  • GET /api/Despesa/{Id}
  • GET /api/Despesa/VMExpenseByIdAsync/{Id}
  • GET /api/Despesa/AllAsync
  • GET /api/Despesa/AllVMAsync
  • GET /api/Despesa/TipoDespesa_ByCategoriaDespesa/{Id}
  • GET /api/Despesa/TipoDespesas
  • GET /api/Despesa/DescricaoCategoriaDespesa/{Id}
  • POST /api/Despesa/ValidateExpense

Document

  • POST /api/Document
  • PUT /api/Document/{Id}
  • DELETE /api/Document/{Id}
  • GET /api/Document/{Id}
  • GET /api/Document/AllDocumentsVM/{Id}
  • POST /api/Document/ValidateDocument

LookupTables

  • GET /api/LookupTables/GetAllRecords/{tableName}
  • GET /api/LookupTables/GetDescriptionByIdAndTable/{id}/{tableName}
  • GET /api/LookupTables/GetPKByDescriptionAndTable/{description}/{tableName}
  • GET /api/LookupTables/{id}/{tableName}
  • DELETE /api/LookupTables/{id}/{tableName}
  • GET /api/LookupTables/CheckRecordExist/{description}/{tableName}
  • POST /api/LookupTables
  • PUT /api/LookupTables/{id}
  • GET /api/LookupTables/CheckFkInUse/{idFK}/{fieldToCheck}/{tableToCheck}
  • GET /api/LookupTables/GetLastInsertedId/{tableToCheck}
  • GET /api/LookupTables/GetFirstId/{tableName}

MailMerge

  • POST /api/MailMerge/MailMergeDocument
  • GET /api/MailMerge/DatabaseStructure

Pets

  • POST /api/Pets
  • PUT /api/Pets/{Id}
  • DELETE /api/Pets/{Id}
  • GET /api/Pets/{Id}
  • GET /api/Pets/AllPetsVM
  • GET /api/Pets/PetVMById/{Id}
  • GET /api/Pets/Pesos
  • GET /api/Pets/Idade/{tamanho}/{meses}
  • POST /api/Pets/ValidatePets

Racao (Dog/Cat food)

  • POST /api/Racao
  • PUT /api/Racao/{Id}
  • DELETE /api/Racao/{Id}
  • GET /api/Racao/{Id}
  • GET /api/Racao/AllRacoesVM
  • GET /api/Racao/RacaoVMById/{Id}
  • GET /api/Racao/PetFeeds/{Id}
  • POST /api/Racao/ValidateRacao
  • GET /api/Racao/DogFood_Info_Pdf

ServerPdf

  • GET /api/ServerPdf/Download/{folder}/{filename}
  • GET /api/ServerPdf/GetServerPdfName/{folder}/{filename}

TipoDespesas (Type of expenses)

  • POST /api/TipoDespesas
  • PUT /api/TipoDespesas/{id}
  • DELETE /api/TipoDespesas/{id}
  • GET /api/TipoDespesas/AllTipoDespesas
  • GET /api/TipoDespesas/AllTipoDespesasVM
  • GET /api/TipoDespesas/TipoDespesaById/{id}
  • GET /api/TipoDespesas/TipoDespesaByIdVM/{Id}
  • POST /api/TipoDespesas/ValidateExpenseType

Vacinacao (Vaccines)

  • POST /api/Vacinacao
  • PUT /api/Vacinacao/{Id}
  • DELETE /api/Vacinacao/{Id}
  • GET /api/Vacinacao/{Id}
  • GET /api/Vacinacao/AllVacinasVM
  • GET /api/Vacinacao/VacinaVMById/{Id}
  • GET /api/Vacinacao/PetVaccines/{Id}
  • POST /api/Vacinacao/ValidateVaccine
  • GET /api/Vacinacao/Vaccines_Info_Pdf

ToDos (To-do lists)

  • POST /api/ToDos
  • GET /api/ToDos
  • PUT /api/ToDos/{Id}
  • DELETE /api/ToDos/{Id}
  • GET /api/ToDos/{Id}
  • GET /api/ToDos/PendingTodos
  • GET /api/ToDos/CompletedTodos
  • POST /api/ToDos/ValidateToDo

🐢 Example Usage

To create a new pet, you can use a tool like cURL or a REST client of your choice:

curl -X POST -H "Content-Type: application/json" -d '{
  "idEspecie": 1, 
  "idRaca": 11,
  "idTamanho": 2,
  "dataNascimento": "01/01/2020",
  "idSituacao": 1,
  "nome": "Shiva",
  "foto": "C:\\Users\\User\\OneDrive\\Imagens\\dogs\\Shiva.jpg",
  "cor": "Preto e castanho",
  "genero": "F",
  "idPeso": 20,
  "idTemperamento": 2,
  "medicacao": "Aluporinol (dosagem a completar)",
  "chipado": 1,
  "chip": "",
  "dataChip": "28/06/2023",
  "numeroChip": "112354559998493",
  "esterilizado": 1,
  "padrinho": 0,
  "doencaCronica": "Leishmaniose",
  "observacoes": "Linda"
}
' http://localhost:5000/api/pets

This will create a new pet named "Shiva".

🌟 Contributing

Contributions to the Daisy Pets project are welcome! If you encounter any issues or have suggestions for improvement, please open an issue on the GitHub repository: https://github.com/fauxtix/DaisyPets/issues

Fork the project (https://github.com/fauxtix/DaisyPets/fork)

Create a branch for your modification (git checkout -b fauxtix/DaisyPets)

Commit (git commit -am 'Add some fooBar')

Push_ (git push origin fauxtix/DaisyPets)

Create a new Pull Request

When contributing code, please follow the existing code style and submit a pull request with your changes.

βš– License

The DaisyPets project is licensed under the MIT License. You can find more information in the LICENSE file.

πŸ“ž Contact

If you have any questions or need further assistance, you can reach out to the project maintainer:

Feel free to contact me with any feedback or inquiries.

Thank you for using Daisy Pets!

daisypets's People

Contributors

fauxtix avatar dependabot[bot] avatar

Stargazers

Tiago Rodrigues avatar

Watchers

Kostas Georgiou avatar  avatar

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.