This is our pet-project that we developed during a hackathon at university.
- The project was written according to MVVM architecture with Router and Combine.
- All generated data was fetched using URLSession.
- Followed Dependency Injection principle, for better testing.
- Utilized all of Apple's latest tools like SwiftUI and SwiftData.
- ExpressJS
- MongoDB
- KAZLLM API
- Soyle API
![](https://private-user-images.githubusercontent.com/57932259/386988818-de88f035-0320-4513-a178-6589c962b111.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMzUyMjUsIm5iZiI6MTczOTAzNDkyNSwicGF0aCI6Ii81NzkzMjI1OS8zODY5ODg4MTgtZGU4OGYwMzUtMDMyMC00NTEzLWExNzgtNjU4OWM5NjJiMTExLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE3MTUyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQxOGJhMTBkM2RhMmI0NDI5NmU5MzBkMjZkOWZmYWVmMDFkZTI3YTdhMWQ5MzMwM2IwOWI4MTAzMWVlZWM3YzUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.EpuPFouQlbjlqQUCh7Rp9x1HXTYW-4iLs_kijHrbX5Y)
![](https://private-user-images.githubusercontent.com/57932259/386988822-5bbab0d5-d167-450d-a56c-f1e21bfd6806.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMzUyMjUsIm5iZiI6MTczOTAzNDkyNSwicGF0aCI6Ii81NzkzMjI1OS8zODY5ODg4MjItNWJiYWIwZDUtZDE2Ny00NTBkLWE1NmMtZjFlMjFiZmQ2ODA2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE3MTUyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTczOTVmMjExYjRiZGRiMGQ1ODM4NzYyOWI0ZmFiZTgwYWI0ZDI5NjIwYzk5N2FlOTE1Y2M1MmQxZTMwOGQ5NWUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Og4_js4JHgY0RED25qY2im7PKEE6KS2Q1qAR2FNI9zk)
![](https://private-user-images.githubusercontent.com/57932259/386988833-76ebb861-3797-42b4-82ae-aa38f39dcd64.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMzUyMjUsIm5iZiI6MTczOTAzNDkyNSwicGF0aCI6Ii81NzkzMjI1OS8zODY5ODg4MzMtNzZlYmI4NjEtMzc5Ny00MmI0LTgyYWUtYWEzOGYzOWRjZDY0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE3MTUyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI0NzZlODBkMzEyZDRiZDgyYTNkMDRjNDM0NjFkNzI0YTI2YmYxMDk0ZGE1YjFlNjc3YmU4NzNkNDViNTliN2MmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.b1NSWJ1CPJ__vxdZO4PgjZkG8TV2ySUP5myvbHz-9jw)
![](https://private-user-images.githubusercontent.com/57932259/386988837-363b4387-b0a7-4b29-b8f3-adbe7b52fa7a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMzUyMjUsIm5iZiI6MTczOTAzNDkyNSwicGF0aCI6Ii81NzkzMjI1OS8zODY5ODg4MzctMzYzYjQzODctYjBhNy00YjI5LWI4ZjMtYWRiZTdiNTJmYTdhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE3MTUyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU2ZTRjYmZiNzBkODU5NzQzYjQxMGQ0MDE0ZjFmNDUxNDU2MzhiNGY5NzRkMDQ3MDI1OGU2MDc1OGYxNGZiODUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.E29pGgiYrGjmCMQSed2SBtGGO1EOsxzT4lNXrvsHkyA)
![](https://private-user-images.githubusercontent.com/57932259/386988840-1937b0b2-0880-4372-83d0-3e0b50a6e72c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMzUyMjUsIm5iZiI6MTczOTAzNDkyNSwicGF0aCI6Ii81NzkzMjI1OS8zODY5ODg4NDAtMTkzN2IwYjItMDg4MC00MzcyLTgzZDAtM2UwYjUwYTZlNzJjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE3MTUyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgzZGY3OGE3NjQ2NGFmYzA3MjQ3MWE3ODJmNjhiNGUwNTc2ZjhlN2VhMTgyMzc0MTQ0YzM5NDA1MjZkYzNiODMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.JHOEDMVdhLWzssOJXlyaXWJ2M4s_1pRoxcKypmrVObQ)
![](https://private-user-images.githubusercontent.com/57932259/386988842-0e897a25-2441-4bd7-a837-84b65e50458f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMzUyMjUsIm5iZiI6MTczOTAzNDkyNSwicGF0aCI6Ii81NzkzMjI1OS8zODY5ODg4NDItMGU4OTdhMjUtMjQ0MS00YmQ3LWE4MzctODRiNjVlNTA0NThmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE3MTUyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIxNGY5MzQ4NjdhOTljYmI1NDQ3MGE5ZTE2MmM1N2I1MmJlZDQ4YWM2ZjBhZTVjNzZlNzAwNTNjZDg4ZDBiMDEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Yhnsf1QAorMSkeEihYQTD4zmVlG1Gf_VLL1ocSvFlk4)
![](https://private-user-images.githubusercontent.com/57932259/386988843-50f8927b-bd59-480e-bddc-aa654863e264.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMzUyMjUsIm5iZiI6MTczOTAzNDkyNSwicGF0aCI6Ii81NzkzMjI1OS8zODY5ODg4NDMtNTBmODkyN2ItYmQ1OS00ODBlLWJkZGMtYWE2NTQ4NjNlMjY0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE3MTUyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ3YWVjN2NlNTBiYjViNWZiZjAzMjZhMDJjNjYwMzM2NTE2NmI0YzEyY2M5Y2NlYTE5YTZhZjZiNWE5MjZkOGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.w9cakAm2R8bQGTcu19KINIZwHtIk2saeqXVrEfucAnE)
https://github.com/user-attachments/assets/f1f7ce7e-4862-4ca3-8198-6c05eb590ece
https://github.com/user-attachments/assets/890c4904-32b1-4ca0-936e-c5dc9131ba57
https://github.com/user-attachments/assets/26db66d5-2a5b-43bb-8f7d-4f0e239d4fa7