user-avatar
S
Samthetutor
Joined
icon image
Internet Computer
27 REP
11 Feedbacks
2 Submissions

Submissions

Submitted

# Advanced Task Management App - It is a task management app that has an admin and team members - Team members and the Admin are identified by their Principal IDs. - An Admin can ; - Add team members - Delete team members - Add tasks - Delete tasks - update the details about a specific team member * Tasks can only be completed by the team members to whom they are assigned. * The team member can only complete the task before its deadline, once the deadline has been reached, they won't be able to. * One can search for tasks using the title or their description * One can also search for completed or uncompleted tasks that have been assigned to a specific team member * One can retrieve all tasks in the contract * One can retrieve all the members * One can check if the principal ID is among the team members. Improvements on this project are highly welcome

100Points
2 Feedbacks
Submitted

# Company Task Management App - It is a task management app that has an admin and normal users(members) - Users and the Admin are identified by their Principal IDs. - An Admin can ; - Add members - Delete members - Add tasks - Delete tasks - update the details about a specific member * Tasks can only be completed by the members for whom they are assigned. * Tasks have to be completed before their deadline. * You can search for tasks using the title or their description * You can also search for completed or uncompleted tasks that have been assigned to a specific individual * You can retrieve all tasks in the contract * You can retrieve all the members * You can check if the principal ID is among the members.

70Points
2 Feedbacks

FEEDBACK

2 REP
Submitted

DBlogx a blogging system allowing users to create, read, update, and delete blog posts, as well as add comments and like/unlike posts

70Points
2 Feedbacks
Feedback

Hello Hexdee, greetings to you. I have added the following improvements

  • Added comments in the code to improve readability
  • Added more logic in the like function
  • Added disLike function to allow viewers to downvote the post
  • Added getAllPostsByUser` function to retrieve all posts created by a specific user
  • Added SerachPost function to allow viewers to search for posts using their title or content
  • Added getStatistics function that returns the overall statistics of the posts in the canister such as total number of posts, total unique authors, most liked post, and the most disliked post.

Below is my PR, have a great day

4.5 ICP
4.5 REP
Submitted

Simple contract that allows to save learning topics for the programming languages. For example - JS: learn syntax, create first class... When studying the desired topic, user can change its status to completed (closed). Contract uses CRUD for languages and topics. User doesn't need to remember every added language id, cause functions accept a language name as a parameter and search an id by its title. Some of the things user can't do: - add a language if that language was added before - add a topic if that topic was added before and assigned with the same language - add a topic to a not existing language

100Points
3 Feedbacks
Feedback

I have added a few changes to your project

  • added init function to allow deployer to initialize the admin on deployment

  • added the isAdmin function to check whether the caller is an admin

  • added checks in the addLanguage, changeLanguageTitle, deleteLanguage, addTopic, updateTopic deleteTopic, updateTopicStatus functions to only allow the owner to call these functions

1.5 ICP
1.5 REP
174 REP
Submitted

This is a canister that manages a collection of user profiles, including following and unfollowing functionality. It is written in TypeScript and follows best practices. Here are the functionalities that it implements: - get user profiles - get a specific user profile - create a user profile - update user profile - delete the user profile - follow a user profile - unfollow a user Profile

70Points
3 Feedbacks
Feedback

Hello Galien, great implementation of your project, I have added a few changes to your project.

  • Modified the userStorageProfile map to use Principal IDs as the keys. This brings in a unique way to let users create accounts using their Principal IDs, which is a unique way to identify users on the Internet Computer

  • Modified the createUserProfile function to only restrict any user with the anonymous Principal ID 2vxsx-fae from creating an account. This ensures that every user has a valid and unique principal ID before creating an account.

  • Modified the deleteUserProfile and updateUserProfile functions to allow only the owner of the account to delete and update the account respectively. this brings in some sort of decentralization where a user has full control over their information

  • Modified the unfollowProfile and followProfile functions to implement the new logic of Principal IDs for identifying user accounts.

Below is my PR. Feel free to check it out. Wish you a great weekend.

1.5 ICP
1.5 REP
19.4 REP
Submitted

This a decentralized event management app canister that allows users to : 1. Create an event. 2. Fetch and view all events. 3. Fetch and view event by an id. 4. Mark an rsvp for an event. 5. Update event by an id 6. Delete an event if you are the owner of that event.

70Points
3 Feedbacks
Feedback

Hello chigozie, great implementation of your project. I have made the following changes.

  • Added checks in the updateEvent function to allow only the owner of the event to update its details
  • Added a check in the attendEvent to allow attendance only if the maximum number has not been reached.
  • Added getMyAttendedEvents function. This returns all the events that have been attended by the caller of this function.
  • getSpecificEvents function that returns either events that have passed or those that are still running depending on the condition supplied
  • Added add Review function that allows the user to leave a review on an event only if they attended it
  • Added getAllEventsByOrganizer function that returns all the events that a certain organizer registered
1.5 ICP
1.5 REP
Submitted

# ICP Saving Contract This smart contract, which was created using the Azle framework (Canister) Typescript on the ICP Blockchain, aims to let save into the smart contract at their discretion. `createSaving` : create new savings `getAllSavings` : get all savings `getSavingById` : get saving by id `calculateApy` : calculate apy `deleteSaving` : delete savings `fundSaving` : fund saving `withdrawSaving` : withdraw savings

80Points
3 Feedbacks
Feedback

i made the following changes.

  • added comments to improve the readability

  • add init to initalize some parameters on canister deployment

  • added checks in the deleteSaving , withdrawSaving functions to only allow the admin to call these functions

  • added a functionality to allow the owner to add a list of whitelsited Principal IDs that are allowed to withdraw the savings other than the admin.

  • added a timelock functionality in the withdrawSaving function. This restricts withdraw until the time specified has elapsed

Submitted

Hi, this is an auth app. It can register user, login, request password reset and return a token which can be used to reset the password. All CRUD operations should work. There can be issues i'm just new at it.

70Points
3 Feedbacks
Feedback

Hello, I have made a few changes to you code in the index.ts file

  • added comments to improve the readability
  • added init function to initialize the admin on deployment
  • Emails and passwords are common login methods in web2, in web2 there is a notion of logging in with addresses and IDs, I have modified the login function to let the user login with their Principal ID, which is a unique identifier for every user on the Internet Computer.
  • added checks in the deleteUser function to allow only the admin to delete accounts
  • added a new function reclaimAccount. This allows the user to reclaim their old account by providing the secret associated with the old account. Once they have reclaimed the account, they will be able to login with their new Principal ID
  • modified the userStorage map to use the Principal IDs as the key. this provides a unique and scallable method to identify user accounts
1.5 ICP
1.5 REP
294 REP
Submitted

I built a simple lottery that allows any player to be able to start the lottery, buy tickets and even end the lottery. Players can then check to see if they're the lucky winners of that lottery. Winner gets half of the prizepool.

70Points
3 Feedbacks
Feedback

Hello JoeEdoh, I have made a few changes to your codebase.

  • Edited the constructor function to allow the deployer to specify the id of the lottery canister admin. This id will be stored in the lotteryAdmin variable

  • Added checks in the startLottery, endLottery,deleteLottery,payWinner functions to only be called by the admin of the lottery canister

  • Added a variable previousWinners to store information about all the previous lottery winners, like their principal IDs and the amount that they won.

  • Edited the payWinner function to also record the principal Id of the winner and the amount in the previousWinners array

  • Added the getAllPreviousWinners function to retrieve all the previous winners of the lottery and the amounts that they won.

Below is my PR.

4.5 ICP
4.5 REP
14 REP
Submitted

# Event Manager ICP Canister Smart Contract This is a Proof of Concept (PoC) **ICP** Canister Smart-Contract built using TypeScript and Node.js on top of the Azle framework that also doubles as my submission to the [Internet Computer TypeScript Smart Contract 101](https://dacade.org/communities/icp/courses/typescript-smart-contract-101) course. This smart contract allows users (**organizer**s) to create events and other users (**attendee**s) to purchase tickets for the events. Functions available for interacting with the smart contract include: - **createUser** -- userId and password protected - **topUpUserBalance** -- userId and password protected - **createEvent** -- userId and password protected - **deleteEvent** -- userId and password protected - **getEvents** - **getEvent** -- userId and password protected - **topUpEventTickets** -- userId and password protected - **purchaseTicket** -- userId and password protected - **getTicketsAttendee** -- userId and password protected - **getTicketsOrganizer** -- userId and password protected

90Points
2 Feedbacks
Feedback

Hello hiatus, I have made a few changes to your project.

  • Modified the userStore map to use Pricncipal IDs of users as keys. This provides a more secure and unique way to store user accounts

  • Modified the createUser function to allow users create accounts using their Principal IDs rather than random Ids. This removes the need for the user to supply the username and password. Also Users that call this function anonymously with the Principal ID 2vxsx-fae wont be able to create accounts.

  • Modified the topUpUserBalance function to automatically track the user account that wants to top up their balance. Another function can be written to allow users to top up balances for other users

  • Modified the createEvent,deleteEvent, topUpEventTickets,purchaseTicket,getTicketsOrganizer,getTicketsAttendee functions to automatically track the user account of the Principal ID calling these functions, and thus removes the need for the user to supply their password and username every time.

  • Added migrateAccount template function. When the user calls this function, they need to specify the Principal ID of the old account and the password associated with it. Once they are verified, user details of the old account will be migrated to a new account that is accessed by the Principal ID that called this function.

Below is my PR, feel free to check it out. Have a nice weekend

4.5 ICP
4.5 REP
Submitted

Hi, this is an budget app. It works like first we set budget and create payments with name and we can spend as our budget when reach our budget we can't create payments also we can update delete and read the payments. So all CRUD operations work. There can be minor issues i'm just new at it.

90Points
3 Feedbacks
Feedback

Hello bezat, great implementation of the project. I have made a few changes to your codebase in the index.ts file

  • added comments to improve the readability

  • added the init function to allow the deployer to specify the owner principal on deployment

  • added several functions addSpender and deleteSpender that allow the owner to specify Principal IDs that are allowed to create payments

  • added some helper functions isAdmin and isSpender

  • added checks in the setBudget function to only the owner to set the budget

  • added checks in the create payment function to allow only the owner and the spenders to create payments

  • added checks in the deletePayment function to only allow the owner to delete a payment

  • added checks in the updatePayment function to only allow the owner to update a payment

  • added checks in the setBudget function to only allow the owner to set the budget

  • Deleted the function that was not used in the codebase

4.5 ICP
4.5 REP
58.5 REP
Submitted

# ICP Event Ticket This is a simple smart contract for managing Event ticket written with Azle framework (Canister) Typescript on ICP Blockchain. Here are the following operations on this smart contract `createEventTicket` : create new event ticket `getAllEventTickets` : get all event tickets `getEventTicketById` : get event ticket by id `deleteEventTicket` : delete event ticket by id `getTicketSoldById` : get ticket sold by id `buyTicket` : buy ticket then increase totalTicketSold in event ticket record `resellTIcket` : resell ticket sold

90Points
3 Feedbacks
Feedback

Hello, Mujhtech, here are the few changes and functions that I have added to your codebase in the index.ts file

  • init function to allow the deployer to specify the owner of the contract on deployment
  • addOrganizer function allows the admin to add more event organizers
  • deleteOrganizer function allows the admin to delete an event organizer from the app
  • isOrganizer function to check whether the caller of the function is among the event organizers or an admin
  • Added checks in the createEventTicket function to only allow the admin and event organizers to create tickets
  • Added checks in the deleteEventTicket function to only allow the admin and event organizers to delete tickets
  • Added checks in the buyTicket so that event organizers and admins cant buy the tickets they are selling
  • Improved the documentation of the whole codebase
1.5 ICP
1.5 REP
Submitted

Tuna record canister -- the canister handle tuna recording with Vessel, Location and Holder. you can record/changeTunaHolder and delete record. Hope the canister help your learning and feel free to give my any feedback.

90Points
4 Feedbacks
Feedback

Hello Ubinix, I have added the following functions and changes to your project

  • init function to allow the deployer to initialize the admin of the app on deployment
  • addMember function allows the admin to add a new trusted member. These trusted members will help the admin to manage the app and ensure that only the trusted entities can update information in the app
  • deleteMember function allows the admin to remove member from the trusted members
  • getAllTrustedMembers function returns an array of the Principal IDs of the trusted members
  • Modified the deleteTuna, recordTuna, and chnageTunaHolder functions to only allow either the admin or trusted members to call them successfully. Below is my PR. Have a nice weekend.
1.5 ICP
1.5 REP