Skip to content

Application for managing the day to day life of your pets. Three solutions available: Desktop (DaisyPets.UI/Windows Forms), Web (DaistPets.Web.Blazor) and Mobile (MauiPetsApp)

Notifications You must be signed in to change notification settings

fauxtix/DaisyPets

Repository files navigation

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, please navigate to the DaisyPets.Web.Blazor project.

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!

About

Application for managing the day to day life of your pets. Three solutions available: Desktop (DaisyPets.UI/Windows Forms), Web (DaistPets.Web.Blazor) and Mobile (MauiPetsApp)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published