Submissions
# 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
# 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.
FEEDBACK
DBlogx a blogging system allowing users to create, read, update, and delete blog posts, as well as add comments and like/unlike posts
Hello Hexdee, greetings to you. I have added the following improvements
like
functiondisLike
function to allow viewers to downvote the postSerachPost
function to allow viewers to search for posts using their title or contentgetStatistics
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
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
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
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
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.
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.
Hello chigozie, great implementation of your project. I have made the following changes.
updateEvent
function to allow only the owner of the event to update its detailsattendEvent
to allow attendance only if the maximum number has not been reached.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 suppliedadd Review
function that allows the user to leave a review on an event only if they attended itgetAllEventsByOrganizer
function that returns all the events that a certain organizer registered# 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
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
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.
Hello, I have made a few changes to you code in the index.ts
file
init
function to initialize the admin on deploymentdeleteUser
function to allow only the admin to delete accountsreclaimAccount
. 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 IDuserStorage
map to use the Principal IDs as the key. this provides a unique and scallable method to identify user accountsI 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.
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.
# 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
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
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.
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
# 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
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 deploymentaddOrganizer
function allows the admin to add more event organizersdeleteOrganizer
function allows the admin to delete an event organizer from the appisOrganizer
function to check whether the caller of the function is among the event organizers or an admincreateEventTicket
function to only allow the admin and event organizers to create ticketsdeleteEventTicket
function to only allow the admin and event organizers to delete ticketsbuyTicket
so that event organizers and admins cant buy the tickets they are sellingTuna 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.
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 deploymentaddMember
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 appdeleteMember
function allows the admin to remove member from the trusted membersgetAllTrustedMembers
function returns an array of the Principal IDs of the trusted membersdeleteTuna
, 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.
Dacade is an open-sourced platform and is created in collaboration with multiple contributors. Go to the repository to start contributing.