Giter Site home page Giter Site logo

miki-saarna / portfolio Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 12.29 MB

A portfolio website displaying some of my skills

JavaScript 13.77% HTML 3.23% CSS 32.91% TypeScript 50.02% Shell 0.06%
portfolio-website typescript javascript parallax-scrolling expressjs mongodb react nodemailer

portfolio's Introduction

Personal Portfolio Website

Table of Contents

Live Application

This application can be viewed here: mikisaarna.com

The backend API is currently running here: https://portfolio-server-three.vercel.app

Both the client and server are hosted on Vercel with the databases hosted by MongoDB.

Description

This is a portfolio meant to display my ability to create a full-stack website incorporating a beautiful and meticulously designed user experience with an API call that displays some of my other projects.

Current features include:

  • Advanced mathematical operations to incorporate parallax effect on certain elements
  • API call to back-end to display notable projects
  • Contact form that incorporates an API call and the Nodemailer package to send an email
  • Mobile-friendly navigation bar with smooth scrolling

Current sections include:

  • Banner that displays a beautiful design with multiple moving elements as the page is vertically scrolled
  • About/bio
  • Portfolio that displays notable projects
  • Contact form

Technologies

This project's front-end is built on React, TypeScript and Vanilla CSS. An API handles all promises necessary to interact with the back-end API database. Complex mathematical equations were incorporated on multiple elements in place of utilizing a package such as react-parallax as this package came with limitations from what I was trying to accomplish.

I am considering creating my own NPM package(s) from a couple of the features such as the Linear Parallax effect (effect displayed by the saturn element) and/or Ellipse Parallax Effect (effect displayed by the satellite element)

The project's back-end is built on Express.js and MongoDB servers utilizing RESTful APIs. Implementation of the Nodemailer package allows easy and efficient capability for a form submission to send an email message to a given email address.

The Express CORS package is implemented for specified domains to access the back-end API. The CORS package is commented out for installation simplicity, but is ready to be used by uncommenting a few lines of code (Detailed instructions within Installation section below)

  • Backend API setup
  • Creating RESTful APIs
  • Using Express for middleware request and response handling
  • Implementing MongoDB servers
  • Frontend built on React with React router and hooks
  • TypeScript implemented on the frontend
  • Express CORS package implemented
  • Project deployed on Vercel
  • Nodemailer package

How To Use

Installation:

  1. Fork and clone this repository
  2. cd into the newly created directory
  3. Run cp ./server/.env.sample ./server/.env
  4. Update the newly created .env file in the ./server directory
    • Alter the value of DATABASE_URL with the connection URL to your MongoDB database cluster unless you wish to use a local database connection
    • Input a valid email address. Nodemailer will use this email address to send an email
    • Input the password for this email address. Nodemailer cannot have access to send an email without the password
  5. Run cp ./client/.env.sample ./client/.env
  6. The newly created .env file in the ./client directory does not need to be editted, unless you wish to connect to the server at a location other than http://localhost:5000
  7. Run npm install to install project dependencies
  8. Run npm start to start your client and server concurrently

Other:

  • If a Gmail account is inputted in step 4 above, visit https://myaccount.google.com/u/3/lesssecureapps and enable "Allow less secure apps". This gives Nodemailer access to use this email address
  • Reconfigure lines 12 - 20 of the ./server/src/app.js file to use the CORS package. Alter the value(s) of the allowedDomains array to include the location(s) where you plan to run the client of the project

Please reach out for assitance if you are having trouble getting the server to properly run.

API Paths

API Path Function
/projects GET: retrieve a list of all projects from the specific MongoDB database
/form POST: creates and sends email from the received form data

Version 2.0

In addition to optimizing the current code base and updating some of the TypeScript type annotations, there are a number of updates planned for the near future for this website. These updates include:

  • Updating JavaScript files using the parallax effect to more efficiently and smoothly adjust to screen size changes
  • Adding a rocket element within the parallax banner section
  • Calculating mathematical isotopes into some of the complex functions, especially ones that implement changes to opacity based on vertical offset

Feel free to reach out to me if there are any other features not listed that you would like to request to be added.

License

MIT License

Copyright (c) [2021] [Miki Saarna]

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Author Info

Back To The Top

portfolio's People

Contributors

miki-saarna avatar

Watchers

 avatar

portfolio's Issues

Menu bar issues

  • Height doesn't match the exact height of the app
  • Can still scroll on the app even when menu bar is open
  • clicking on the anchor tags doesn't close the menu bar

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.