[project_android_todo.png]
This is a demo CRUD applicaton Build using
Frontend | Android Studio (JAVA) |
---|---|
Backend | NodeJS & Express JS |
MS SQL Server |
The frontend android application use Retrofit Library for calling APIS
The backend follows MVC pattern and preform CRUD on the Task Object in database
Script for Creation of Task Table and Script for stored procedures performing CRUD on Task are located in /dbscript folder
Database user configuration:
![dbUserSettings](https://private-user-images.githubusercontent.com/90034836/341389741-5a601f58-1f2b-4afd-ad75-b6463a431e60.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyMzY1NDUsIm5iZiI6MTcyMjIzNjI0NSwicGF0aCI6Ii85MDAzNDgzNi8zNDEzODk3NDEtNWE2MDFmNTgtMWYyYi00YWZkLWFkNzUtYjY0NjNhNDMxZTYwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDA2NTcyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTI5ZGQ3YTMwMWUyYTJmZmJhOTE0MjVkMjBjNTNhOTVmNGJkMjUyNzJhNThlNDc2MzA4N2M0NGEzMzg4YTU3YzcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.oqbrU6kpyWZqH9fJ5hz3CN9luR38XuXe4CdsWNfQBk8)
![dbUserSettings2](https://private-user-images.githubusercontent.com/90034836/341389748-684e1f2a-eacd-40fb-859e-abac2b54de2d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyMzY1NDUsIm5iZiI6MTcyMjIzNjI0NSwicGF0aCI6Ii85MDAzNDgzNi8zNDEzODk3NDgtNjg0ZTFmMmEtZWFjZC00MGZiLTg1OWUtYWJhYzJiNTRkZTJkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDA2NTcyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIyMzI1ZTZiNjVkMjg5YjA3MWM2ODMwY2JlNTg0NGM3MmQ0ZjU0MzcyMGZhZjliNmQ2MzBkZTY0MzUwNmUwMTQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Ip8wNxjj8ztMt5vsrLrcZqc1B68pdfwzq3AZMxMbjyg)
The fullstack application supports the following functionalities:
- Basic CRUD operation
![android1](https://private-user-images.githubusercontent.com/90034836/343696643-6af65baa-cef0-46bc-86c1-00f32d7d006d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyMzY1NDUsIm5iZiI6MTcyMjIzNjI0NSwicGF0aCI6Ii85MDAzNDgzNi8zNDM2OTY2NDMtNmFmNjViYWEtY2VmMC00NmJjLTg2YzEtMDBmMzJkN2QwMDZkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDA2NTcyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTlmNjcwNTIyZWFjMmFjOTFhMGVmN2YyZTE1MjUyNTA3YWJkNWNkODdiNjIzMzAzYTMxYjlkMjBkNDhlOTg1ZDAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.2in09r4ZSetINxAceNGRGHnmNiyfqzSzRR4J6DaKS10)
[android2.png]
![android2](https://private-user-images.githubusercontent.com/90034836/343696650-819538cc-48ca-43be-9b3f-d1becee135a7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyMzY1NDUsIm5iZiI6MTcyMjIzNjI0NSwicGF0aCI6Ii85MDAzNDgzNi8zNDM2OTY2NTAtODE5NTM4Y2MtNDhjYS00M2JlLTliM2YtZDFiZWNlZTEzNWE3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDA2NTcyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM3YzdkZDJiZDc5MmRmNzA0OTBhODMyNzY5ZmY1NTc3NmRhYjZjOGZmNzU2Yzc3NTViNjkxODkyNzhhNTk2MjMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.XnIvUDFQ4k3RMAxuFHTttzWH7MBBZbI0CcEYpot9AAk)
[android3.png]
![android3](https://private-user-images.githubusercontent.com/90034836/343706423-df4b8d95-19bd-405e-b75e-5d370faf201e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyMzY1NDUsIm5iZiI6MTcyMjIzNjI0NSwicGF0aCI6Ii85MDAzNDgzNi8zNDM3MDY0MjMtZGY0YjhkOTUtMTliZC00MDVlLWI3NWUtNWQzNzBmYWYyMDFlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDA2NTcyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdkNGRmMGU0NDUzMDI2ZjE1MTNmZjRmNGU0NjI0OWY2MjNhODdiYTMyNmNhMDJmODMyZGIwYzVmYjg3ZDBlZTAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.tT3GX3uSYtQOlAuBgjo1omfLHmnVWlH_-oYppjfbUcY)
[android4.png]
![android4](https://private-user-images.githubusercontent.com/90034836/343696657-f182fa52-70fc-42e1-af51-c2a6128ccdfe.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyMzY1NDUsIm5iZiI6MTcyMjIzNjI0NSwicGF0aCI6Ii85MDAzNDgzNi8zNDM2OTY2NTctZjE4MmZhNTItNzBmYy00MmUxLWFmNTEtYzJhNjEyOGNjZGZlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDA2NTcyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWUyYTdjZWQ1NzZiN2FiYTkzMmE1MzE2M2FhMTkwZWYyOGQ5YjMyNzUxODYyYzlkYzE3NzlhOThlOWM2ZTI0N2MmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.2qdJAFNBMQlfwhPAs1g3dtwE1dFMwGOxIoO_CpRodj0)
[android4_2.png]
Newly created record is displayed on the list:
![android4_2](https://private-user-images.githubusercontent.com/90034836/343706431-550293bd-e3e0-47c2-b4bf-bea7ced9c04b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyMzY1NDUsIm5iZiI6MTcyMjIzNjI0NSwicGF0aCI6Ii85MDAzNDgzNi8zNDM3MDY0MzEtNTUwMjkzYmQtZTNlMC00N2MyLWI0YmYtYmVhN2NlZDljMDRiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDA2NTcyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ1MmJmY2RjMzVlNzBkNTQ0YWNlYzFlOGU5NWIyMmZiNTBmYzE4ZmM4ZGNkOTg1MTdmZGQ3NTJmMDRkNDc5OTMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.jFSnX6linF3l2uK7tDST5fMMdvthEzaaBicZIogW0q0)
Press UPDATE button on the newly added record
[android5.png]The original value of the record is displayed:
![android5](https://private-user-images.githubusercontent.com/90034836/343708280-c62e1d50-3c9e-4362-9286-8102b52a6a65.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyMzY1NDUsIm5iZiI6MTcyMjIzNjI0NSwicGF0aCI6Ii85MDAzNDgzNi8zNDM3MDgyODAtYzYyZTFkNTAtM2M5ZS00MzYyLTkyODYtODEwMmI1MmE2YTY1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDA2NTcyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc1YmY1MDU4NzA4ZmQ1MTAzNTQwZjYyYTVjMzdmNjg0ZDI4MzQyY2QwMzViYTRjODFhODI5OWNiYWYwYjBhMzgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.H6NbhwGyPeaKN8R5nBhS8va9Me8kA2DRkHnKuAopn8Q)
[android6.png]
Make changes to taks name,deadline,reps and file path:
![android6](https://private-user-images.githubusercontent.com/90034836/343706435-52fb003d-9c6d-4979-88ea-b257352157ef.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyMzY1NDUsIm5iZiI6MTcyMjIzNjI0NSwicGF0aCI6Ii85MDAzNDgzNi8zNDM3MDY0MzUtNTJmYjAwM2QtOWM2ZC00OTc5LTg4ZWEtYjI1NzM1MjE1N2VmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDA2NTcyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWU2MjM5MGU2OTBmYzc2MGVlMzI5M2UwZDUzNDIzOWI5NzE5Y2JjMzA3ZWUyOWJkYzEwMjQ1N2Q0NmU2Nzc2NTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.MycOOvy4QmbRLzUXi2l0-uBahYSVhKZ_rin4UBS46pk)
[android7.png]
![android7](https://private-user-images.githubusercontent.com/90034836/343696671-accbc0f0-02aa-425d-be98-c7f116d172fb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyMzY1NDUsIm5iZiI6MTcyMjIzNjI0NSwicGF0aCI6Ii85MDAzNDgzNi8zNDM2OTY2NzEtYWNjYmMwZjAtMDJhYS00MjVkLWJlOTgtYzdmMTE2ZDE3MmZiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDA2NTcyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg3MWNjZmZjZGYwNWYyNTE2NzgwYWJiMDBjNWExNTc0OTFhZDI3ZmE1ODdlZjk4Y2IzOWQ3NjMyOWRlMzgzMDgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.zBEWpZXTF0nmz8aL98IHhFQiSj2f8szAdQF9tl1Q6Ow)
Updated result are displayed:
[android8.png]![android8](https://private-user-images.githubusercontent.com/90034836/343706439-73b26b9f-337c-4eba-b594-8ad125ee865a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyMzY1NDUsIm5iZiI6MTcyMjIzNjI0NSwicGF0aCI6Ii85MDAzNDgzNi8zNDM3MDY0MzktNzNiMjZiOWYtMzM3Yy00ZWJhLWI1OTQtOGFkMTI1ZWU4NjVhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDA2NTcyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQxYjc0ODViMDZkNjIxMjg4NDQ3N2ZjZDEwNzhkMWZjYmM3MGI5YTRkNmJiMmIxOTliYWM1NzM5ZjE4YjFiNDYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.zosGcNutqmaP5Woh2FH55P_ek5eEMTSxR8dSwUWvCQI)
[android9.png]
![android9](https://private-user-images.githubusercontent.com/90034836/343711294-9718df11-961b-4d4e-81b4-46199198f91b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyMzY1NDUsIm5iZiI6MTcyMjIzNjI0NSwicGF0aCI6Ii85MDAzNDgzNi8zNDM3MTEyOTQtOTcxOGRmMTEtOTYxYi00ZDRlLTgxYjQtNDYxOTkxOThmOTFiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDA2NTcyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTczMjEwYmRhODYxZDQ0NDBhZjhmYmJhMjFjY2U1Yjk5Y2NlNTAwY2E3ZmMzYzQyYTgwZDFhZTQ0OGJhNzU2NjUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.JclbjeuDXpT_sgFRy_a4klOArszT3Qhi5gPaHnb5eck)
[android10.png]
![android10](https://private-user-images.githubusercontent.com/90034836/343711302-4f963b4b-7b6b-4155-9ff0-89b1c1d8ed3a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyMzY1NDUsIm5iZiI6MTcyMjIzNjI0NSwicGF0aCI6Ii85MDAzNDgzNi8zNDM3MTEzMDItNGY5NjNiNGItN2I2Yi00MTU1LTlmZjAtODliMWMxZDhlZDNhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDA2NTcyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBmZGFiODJkMTRlN2M1NTIxN2UwMTJlZmZlNTJhYWIyNDgwMmRkMzU3MWMwZjYyN2E5NDA2ODA4MmE0NDA2ZWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Xf4gDVZP9Ysj9t3Z36QVoxKw_ESK3BKMYvlgcyNoucQ)
<uses-permission android:name="android.permission.INTERNET"/> <application android:usesCleartextTraffic="true">