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

Block or report happy-teddy

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.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