Code Monkey home page Code Monkey logo

portfolio's Introduction

paulobordignon-logo Paulo Bordignon's Portfolio

The purpose of this project is to create a personal website to introduce myself and show my projects to all people.


Architecture and decisions

The main objective was to create a portfolio using a different backend to manage the projects' list. I chose the Ethereum blockchain which offers us a decentralized, low-price, and transparent solution with data always available.

The smart contract was built using Hardhat, Mocha, and Alchemy. It has functions to add projects, remove projects, and list projects. Inside this smart contract, there is a projects' array that can be manipulated only by the owner(contract deployer). The images of projects also are decentralized hosting using IPFS.

In the front-end is used the atomic design methodology for creating the components, this improves a vision of how the interface and elements are connected promoving scalability.

Using React's Context API was built a global notification (inside each page) to always display the alert messages in the same place and always have only one alert displayed each time [1].

If a non-owner of the contract tries to access the admin page, the Next.js middleware redirects the user to the home page (without flashing content). The admin user is verified through his connected wallet address.

For users to connect their wallet was used Rainbowkit a modern and open-source project. To always have the smart contract content and wallet connect available was used a private provider through Alchemy.

The private provider has costs because of this was implemented the ISR data fetching method to get the content only one time per day indifferent of quantity access. The ISR also optimizes the SEO of the website displaying all content in the first render.


Technologies

Next.js, Typescript, Solidity, Hardhat, Ethers, Alchemy, Rainbowkit, Mocha, Pinata, Ethereum, Framer Motion, IPFS, and others.


Requirements

1 - Run yarn to install the dependencies;

2 - Deploy the smart contract using Hardhat and Alchemy, see more information by accessing the contracts folder;

3 - Fill out environment variables;

4 - Run: yarn dev.


Next features

Create also a decentralized domain and use the most possible decentralized resources, like Fleek to host the website and others.


References

[1] de Carvalho, D. M. (2020). Handling global notifications with React's Context API.

portfolio's People

Contributors

paulobordignon avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.