Skip to content

CJ42/CJ42

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

47 Commits
Β 
Β 

Repository files navigation

Welcome to my GitHub Profile! πŸ‘‹

side Gif

X (formerly Twitter) URL Contact Me Read My Articles Youtube videos πŸ₯–πŸ₯πŸ‡«πŸ‡·

I am Jean a passionate full stack software engineer, focused on Web3 development, 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!

See GitHubProfile.sol
// 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(0xC0Dec0dec0DeC0Dec0dEc0DEC0DEC0DEC0DEC0dE) {

    /// @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

About

The homepage for my public Github Profile

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors