Skip to content
View happy-teddy's full-sized avatar
β™₯️
Focusing
β™₯️
Focusing

Block or report happy-teddy

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
happy-teddy/README.md

Welcome to my GitHub Profile! πŸ‘‹

side Gif

X (formerly Twitter) URL Contact Me πŸ₯–πŸ₯

I am Teddy, a passionate web3 dev, specialised in smart contracts and Solidity.

Author of the πŸ““ All About Solidity Book! + ✍🏼 All About Solidity article series

  • πŸ”­ Currently working as: Smart Contract Team Lead at LUKSO.
  • 🌱 Currently learning: Defi.
  • 🀝🏻 Looking to collaborate on: any web3 protocol or project.
  • πŸ’¬ Ask me anything about: smart contracts and Solidity! 🫑

πŸŽ™οΈ Talks & Presentations

Note: below is my GitHub profile as a smart contract code in Solidity!


// SPDX-License-Identifier: YOLO
pragma solidity ^0.8.x;

//                                   YOLO LICENSE
//                              Version 1, July 10 2015
// THIS SOFTWARE LICENSE IS PROVIDED "ALL CAPS" SO THAT YOU KNOW IT IS SUPER
// SERIOUS AND YOU DON'T MESS AROUND WITH COPYRIGHT LAW BECAUSE YOU WILL GET IN
// TROUBLE HERE ARE SOME OTHER BUZZWORDS COMMONLY IN THESE THINGS WARRANTIES
// LIABILITY CONTRACT TORT LIABLE CLAIMS RESTRICTION MERCHANTABILITY SUBJECT TO
// THE FOLLOWING CONDITIONS:
// 1. #yolo
// 2. #swag
// 3. #blazeit

import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";

/// @title GitHubProfile
/// @dev A contract to store and manage your GitHub profile information.
contract GitHubProfile is Ownable(0xB82023c6d61C60E8715db485066542d501A91140) { // cj42.eth

    /// @dev Event emitted when the profile is created
    event ProfileCreated(string username, string url, string job, string[] skills);

    /// @dev Event emitted when the job is updated
    event JobChanged(string oldJob, string newJob);

    /// @dev Event emitted when a new skill is added
    event SkillAdded(string newSkill);

    struct Github {
        string username;
        string url;
    }

    Github private githubInfos;

    /// @dev Set as constant as assigned at birth (not planning to change it!)
    string public constant FIRST_NAME = "Jean";
    
    /// @notice The current job title
    string public job;

    /// @notice A list of skills
    string[] public skills;

    /// @dev My approach to web3, Blockchain and Programming πŸͺ‚
    string public constant motto = unicode"Keep Learning πŸ“š, Keep BUIDLing! 🫑";

    /// @dev Initializes the contract with default values for GitHub information, job title, and skills.
    constructor() {
        githubInfos.username = "CJ42";
        githubInfos.url = "https://github.com/CJ42";
        job = "Smart Contract Team Lead at LUKSO";

        skills.push("Solidity");
        skills.push("Smart Contracts");
        skills.push("Blockchain");
        skills.push("Web Development");
        skills.push("React");

        emit ProfileCreated(githubInfos.username, githubInfos.url, job, skills);
    }

    /// @notice Updates the job title
    /// @param newJob The new job title to set
    /// @dev Only the contract owner (CJ42.eth) can call this function
    function updateJob(string memory newJob) public onlyOwner {
        emit JobChanged(job, newJob);
        job = newJob;
    }

    /// @notice Adding a new skill `newSkill` to the list
    /// @param newSkill The new skill to add
    function addSkill(string memory newSkill) public onlyOwner {
        skills.push(newSkill);
        emit SkillAdded(newSkill);
    }

    /// @notice Retrieves the list of skills
    /// @dev We cant get back the full array from the `public` getter of the state variable.
    /// The `skills(uint256)` getter function can only get value at specific indexes.
    /// @return An array of strings representing the skills
    function getSkills() public view returns (string[] memory) {
        return skills;
    }

    /// @notice Retrieves the GitHub username and URL
    /// @return A tuple containing the GitHub username and URL
    function getGithubInfo() public view returns (string memory, string memory) {
        return (githubInfos.username, githubInfos.url);
    }
}

🌟 Featured Projects

Jean's Github Stats

πŸ’ LUKSO Featured

Jean's Github Stats

πŸ‘¨πŸ»β€πŸ³ Ongoing projects I am cooking

Pinned Loading

  1. SolanaNFTBot SolanaNFTBot Public

    Forked from milktoastlab/SolanaNFTBot

    A helpful bot for tracking your Solana NFT project on discord channels.

    TypeScript 3

  2. solana-nft-monitor solana-nft-monitor Public

    Forked from aeminium-labs/solana-nft-monitor

    Monitor Solana NFT projects using Github Actions + flatgithub.heygears.com

    TypeScript 3

  3. smart-contracts smart-contracts Public

    Forked from yieldyak/smart-contracts

    Autocompounder contracts written in Solidity

    Solidity 3

  4. SoliditySamples SoliditySamples Public

    Forked from ajlopez/SoliditySamples

    Solidity Smart Contracts Samples

    JavaScript 3

  5. next-ecommerce next-ecommerce Public

    Forked from lucaspulliese/next-ecommerce

    A beautiful ecommerce made with Next.js

    TypeScript 3

  6. langchain-supabase-website-chatbot langchain-supabase-website-chatbot Public

    Forked from mayooear/langchain-supabase-website-chatbot

    Build a chatgpt chatbot for your website using LangChain, Supabase, Typescript, Openai, and Next.js.

    TypeScript 3