All Projects → andresrodriguez55 → andresrodriguez55.github.io

andresrodriguez55 / andresrodriguez55.github.io

Licence: GPL-3.0 License
Personal blog and portfolio with administration panel, notification system and comment system.

Programming Languages

javascript
184084 projects - #8 most used programming language
PHP
23972 projects - #3 most used programming language
CSS
56736 projects
HTML
75241 projects

Projects that are alternatives of or similar to andresrodriguez55.github.io

nextjs-portfolio
Source Code for my rebranded personal website and portfolio.
Stars: ✭ 23 (+27.78%)
Mutual labels:  portfolio, personal-website, personal-blog
sutanlab.id
☕️ My Personal Homepage & Blog site with NextJS. 🇺🇸 🇮🇩
Stars: ✭ 39 (+116.67%)
Mutual labels:  portfolio, personal-website, personal-blog
BaseMax.Github.io
Max Base Personal Website.
Stars: ✭ 20 (+11.11%)
Mutual labels:  portfolio, personal-website, personal-blog
AVS1508.github.io
Personal Résumé Website developed using ReactJS and Bootstrap and hosted on Github Pages. Displays my web presence, story, work experience, education, projects, achievements, and contact information.
Stars: ✭ 24 (+33.33%)
Mutual labels:  personal-site, portfolio, personal-website
personal-website
GitHub monorepo that runs my personal website.
Stars: ✭ 30 (+66.67%)
Mutual labels:  personal-site, portfolio, personal-website
anniew.xyz
My Personal Website / Portfolio
Stars: ✭ 41 (+127.78%)
Mutual labels:  personal-site, portfolio, personal-website
ezprofile
🚀 Create an automatic portfolio based on GitHub profile.
Stars: ✭ 344 (+1811.11%)
Mutual labels:  personal-site, portfolio, personal-website
osprey-delight
Osprey Delight is the free-minded artist's choice for a clutter-free and blazingly fast single-page portfolio.
Stars: ✭ 43 (+138.89%)
Mutual labels:  personal-site, portfolio, personal
phuctm97.com
🏚 Home on the Web
Stars: ✭ 41 (+127.78%)
Mutual labels:  personal-site, personal-website, personal-blog
rizkicitra
My Personal Website, build with Next.js and Tailwind CSS
Stars: ✭ 82 (+355.56%)
Mutual labels:  portfolio, personal-website, personal-blog
personal-page
Personal Page is a project that contains a person's personal information and resume.
Stars: ✭ 20 (+11.11%)
Mutual labels:  personal-site, personal-website, personal-blog
thundergolfer.github.io
just my website. 🌩🏌🏼‍♂️
Stars: ✭ 16 (-11.11%)
Mutual labels:  portfolio, personal-website, personal-blog
gatsby-theme-portfolio-minimal
A Gatsby Theme to create modern one-page portfolios with a clean yet expressive design.
Stars: ✭ 51 (+183.33%)
Mutual labels:  portfolio, personal-website
mahtamun-hoque-fahim.github.io
Repository for my ever loved portfolio, for what I've spent a huge amount of time. Check it out !
Stars: ✭ 10 (-44.44%)
Mutual labels:  portfolio, personal-website
django admin chart js
An example repo showing how to add Chart.js to Django admin
Stars: ✭ 35 (+94.44%)
Mutual labels:  admin, chartjs
yii2-admin-template
Yii2 application template targeted for backends.
Stars: ✭ 17 (-5.56%)
Mutual labels:  admin, backend
portfolio-template
Portfolio template for any developer or designer. Made with love towards everyone :)
Stars: ✭ 21 (+16.67%)
Mutual labels:  portfolio, personal-website
PortfolioV2
🔥 The Complete Customizable Software Developer Portfolio Template which lets you showcase your work and provides each and every detail about you as Software Developer.
Stars: ✭ 197 (+994.44%)
Mutual labels:  personal-site, personal-website
umbrella
Umbrella framework
Stars: ✭ 98 (+444.44%)
Mutual labels:  admin, backend
portfolio
V2.0 of my personal portfolio! Feel free to fork it, star it, etc!
Stars: ✭ 31 (+72.22%)
Mutual labels:  portfolio, backend

Implementation of a Full Stack Blog With Administration Panel, Notification System and Comment System With PHP, React & MYSQL

FULL DOCUMENTATION

SITE LINK

Contents

  • Database Design
  • PHP Implementation in The Server Side
  • Admin Panel
  • React Implementation in The Client Side
  • Host

Database Design

As you can see in the diagram, the base is very basic, but sufficient for all the inconveniences that could arise. For the management of the posts that I do it was obvious that I needed the POST and CATEGORY entities, the attributes that they contain that are also seen were also obvious that I needed them so I am not going to go into detail about them.

The BLOG_ADMIN table has no relationship with the POST table because I will only be the admin, the table will be used to save my data, guaranteeing even more security in the backend (because if I saved it in some php document I could expose at some risk).

The USER_COMMENT table will save the IPs of the users in order to handle spam, users will be allowed to publish only 3 comments in one day, the number of comments per hour could be changed. The country attribute will be used for general administration information.

Also in table SUSRIBED_EMAILS the ip will be saved to lower the chances of having an overload in the database.

I will not go into detail about the SQL scripts, they can be seen in the repository of this project on github.


PHP Implementation in The Server Side

Within the scripts, there is one that works in context mode, which helps to implement the connection with the database.

There are objects which represent each entity in the database, Each object contains a function focused on the needs of the page, each object will receive an instance of a context object which will help to connect to the database.

Finally there are the scripts which have the function of receiving HTTP requests and being able to respond to them.

The scripts used for administrator actions are special since whenever a get or post request is made referring to an administrator operation, administrator account values will be expected, it is not very correct to do this but it increases the security in these operations.

I would also like to emphasize that when a new post is published, such a function will be implemented backwards that works with the sendgrid service, which helps to notify subscribed users about a new post, also giving in such email the option to unsubscribe from the blog.


Admin Panel

To raise the level of the project I have decided to make an admin panel, so to be able to make a fully functional application for any client, the panel is completely designed for my personal use.

Here is a demo:

<iframe width='560' height='315' src='https://www.youtube.com/embed/Nyqlh5KCj0M' title='YouTube video player' frameborder='0' allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture' allowfullscreen></iframe>

The content of the posts is markdown type, this is because it makes it very easy to write new posts, in addition html content is also accepted, in the frontend I adapt the positions and sizes of images and videos, which makes everything even easier. In addition, I have also incorporated a markdown content viewer on the right which exactly emulates the client's view.

I can edit the nicknames and comments of the users (due in case I should delete some part of them) and directly delete the comments, I can add, edit and delete the categories and finally I can create, delete and edit the posts.

You could say that the admin panel is a CRUD application.

I have also put the statistics in the admin section before starting the session, I do this with the purpose of exposing them a little outwards.


React Implementation in The Client Side

The subject of design and user experience was thought very basic, this subject will be reviewed soon.

For the content reading issue, I have used the react-markdown, remark-gfm and react-syntax-highlighter libraries, because it facilitates both the editing and the display of the content, I name these libraries because the truth It has fascinated me that thanks to them, great things can be done in a short time.

On the client side, I would only like to highlight one thing, I have even thought about the issue of a wrong url, as I have shown before in the server part to show a post, the only thing that is necessary is to give its ID, but what if would there be a wrong title in the url? For this reason on the client side I control if the title also matches the content of the database, based on that the content is loaded or if the user is not told that the post he is requesting does not exist.

I also want to emphasize that I thought up to the issue of the dates of the comments, I mean the time difference, so whenever someone comments on a post I will always save the time zone of that client so that whenever I show a comment to another client can adapt the dates of the comments to the time zone of that client.

This detail is also taken into account when the dates of the posts are shown to the user.

I do this by doing the conversions of hours on the client side, on the server the dates will be saved in the Istanbul timezone.


Host

The host is completely free, the database is on clever-cloud, the php scripts are on heroku and the static page on the github pages.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].