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.
-
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).
For the web project screenshots, please navigate to the DaisyPets.Web.Blazor project.
For the Maui project screenshots, navigate to 'MauiPetsApp'.
For the database structure and current data usage, please have a look to the .sql file in the webapi project
Before running the Daisy Pets project, ensure that you have the following dependencies installed:
- .NET 7 SDK: https://dotnet.microsoft.com/download/dotnet/7.0
To download and run the Daisy Pets project, follow these steps:
-
Clone the repository to your local machine:
git clone https://github.com/fauxtix/DaisyPets.git
-
Navigate to the project directory:
cd DaisyPets
-
Build the project:
dotnet build
-
Apply the database migrations to create the SQLite database (if you want to use Entity Framework):
dotnet ef database update --project DaisyPets
-
Run the API:
dotnet run --project DaisyPets.WebApi
The API should now be running locally on http://localhost:[PORT]
.
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
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".
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.
The DaisyPets project is licensed under the MIT License. You can find more information in the LICENSE file.
If you have any questions or need further assistance, you can reach out to the project maintainer:
- π¨βπ» Maintainer: Fausto LuΓs
- β Email: fauxtix.luix@hotmail.com
Feel free to contact me with any feedback or inquiries.
Thank you for using Daisy Pets!