diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..600d2d33
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.vscode
\ No newline at end of file
diff --git a/assets/css/BASE/reset.css b/assets/css/BASE/reset.css
new file mode 100644
index 00000000..9b4076e0
--- /dev/null
+++ b/assets/css/BASE/reset.css
@@ -0,0 +1,68 @@
+/**
+ * BASE - RESET
+ */
+
+*,
+*::before,
+*::after {
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+
+* {
+ box-sizing: border-box;
+ /* Make sure all elements are above the background */
+ z-index: 1;
+ position: relative;
+}
+
+/* default */
+
+html {
+ font-size: 62.5%;
+ scroll-behavior: smooth;
+ color: var(--foreground);
+ transition: color var(--transition);
+ background-color: #ffffff;
+ background-blend-mode: multiply;
+}
+
+html::before {
+ content: "";
+ position: fixed;
+ height: 100%;
+ width: 100%;
+ background: var(--white);
+ transform: translateX(-100%);
+ transition: transform var(--transition);
+ z-index: 0;
+}
+
+body {
+ font-family: 'Roboto Mono', monospace !important;
+ box-sizing: border-box;
+ mix-blend-mode: difference;
+}
+
+ul {
+ list-style: none;
+ padding-left: 0;
+}
+
+/* button{
+ cursor: none !important;
+} */
+
+code{
+ display: block;
+ padding-bottom: 0.6rem;
+}
+
+/* headings */
+
+h1, h2, h3, h4, h5, h6 {
+ margin-top: 0;
+ margin-bottom: 1rem;
+ letter-spacing: normal;
+}
diff --git a/assets/css/LAYOUT/common.css b/assets/css/LAYOUT/common.css
new file mode 100644
index 00000000..1c15a9e1
--- /dev/null
+++ b/assets/css/LAYOUT/common.css
@@ -0,0 +1,56 @@
+/**
+ * LAYOUT - COMMON
+ */
+
+.main {
+ background-color: #ffffff;
+ margin: 0 auto;
+ max-width: 992px;
+ padding: 2rem 0;
+}
+
+.section {
+ margin: 2rem;
+ background: #F8F9FA;
+}
+
+.header {
+ z-index: 2;
+ padding: 2rem 4rem;
+}
+
+.footer{
+ padding: 2rem 2rem 0;
+}
+
+.full-page{
+ height: calc(100vh - 4rem);
+ max-height: calc(100vh - 4rem);
+}
+
+.outside {
+ width: 100%;
+ padding-top: 133.33%; /* 4:3 Aspect Ratio (divide 4 by 3 = 1.3333) */
+ position: relative; /* If you want text inside of it */
+}
+
+/* If you want text inside of the container */
+.inside {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+}
+
+.bg-black {
+ background-color: #121212;
+}
+
+.bi {
+ font-size: 3rem;
+}
+
+.big {
+ font-size: 6rem;
+}
diff --git a/assets/css/MODULE/blockquote.css b/assets/css/MODULE/blockquote.css
new file mode 100644
index 00000000..7ae3c30c
--- /dev/null
+++ b/assets/css/MODULE/blockquote.css
@@ -0,0 +1,28 @@
+/**
+ * MODULE - BLOCKQUOTE
+ */
+
+.blockquote {
+ margin-left: 1.5rem;
+}
+
+.blockquote__body{
+ font-size: 1.2rem;
+}
+
+.blockquote__header{
+ color: var(--darkGrey);
+}
+
+.blockquote__name{
+ font-weight: 600;
+ margin-bottom: 0.5rem;
+}
+
+.blockquote__dot{
+ margin: 0 0.5rem;
+}
+
+.blockquote__company-name{
+ font-weight: 300;
+}
\ No newline at end of file
diff --git a/assets/css/MODULE/comments.css b/assets/css/MODULE/comments.css
new file mode 100644
index 00000000..6a49c9c2
--- /dev/null
+++ b/assets/css/MODULE/comments.css
@@ -0,0 +1,37 @@
+/**
+ * MODULE - COMMENTS
+ */
+
+.comments{
+ padding: 3rem 0 6rem;
+}
+
+.comments__total{
+ border-top: 1px solid var(--grey);
+ border-bottom: 1px solid var(--grey);
+ padding: 2rem 0;
+ margin-bottom: 1rem;
+}
+
+.comments__item {
+ padding-top: 2rem;
+}
+
+.comments__buttons{
+ margin-left: 1rem;
+}
+
+.comments__buttons button{
+ background-color: transparent;
+}
+
+.comments__buttons button i {
+ color: var(--darkGrey);
+ height: 20px;
+ width: 20px;
+ font-size: 1.8rem;
+}
+
+.comments__buttons button:hover i {
+ color: var(--black);
+}
diff --git a/assets/css/MODULE/header.css b/assets/css/MODULE/header.css
new file mode 100644
index 00000000..e2661e0a
--- /dev/null
+++ b/assets/css/MODULE/header.css
@@ -0,0 +1,16 @@
+/**
+ * MODULE - HEADER
+ */
+
+.header{
+ z-index: 2;
+ padding: 2rem 4rem;
+ mix-blend-mode: difference;
+ color: #ffffff;
+ max-width: 992px;
+}
+
+.header__title{
+ font-size: 2.4rem;
+ margin-bottom: 0;
+}
\ No newline at end of file
diff --git a/assets/css/MODULE/modal.css b/assets/css/MODULE/modal.css
new file mode 100644
index 00000000..d6e78e6d
--- /dev/null
+++ b/assets/css/MODULE/modal.css
@@ -0,0 +1,20 @@
+/**
+ * MODULE - MODAL
+ */
+
+.modal-header {
+ border-bottom: 0;
+}
+
+.modal-header .btn-close {
+ transform: scale(1.5);
+ z-index: 1100;
+}
+
+@media (min-width: 576px) {
+ .modal-dialog {
+ width: calc(100% - 3rem);
+ max-width: 992px;
+ margin: 1.75rem auto;
+ }
+}
\ No newline at end of file
diff --git a/assets/css/MODULE/post-block.css b/assets/css/MODULE/post-block.css
new file mode 100644
index 00000000..ccec9184
--- /dev/null
+++ b/assets/css/MODULE/post-block.css
@@ -0,0 +1,41 @@
+/**
+ * MODULE - POST BLOCK
+ */
+
+.posts-block{
+ padding: 4rem;
+}
+
+.post-block{
+ margin-bottom: 3.5rem;
+}
+
+.post-block__content{
+ background-image: url(/assets/images/svg/anim-false.svg);
+ background-repeat: repeat-x;
+ background-size: auto 0.3rem;
+ background-position-y: bottom;
+ padding-bottom: 0.8rem;
+}
+
+.post-block__name {
+ font-size: 1.2rem;
+ margin-bottom: 0.5rem;
+}
+
+.post-block__title{
+ cursor: pointer;
+ font-weight: 600;
+ font-size: 2.2rem;
+ margin-bottom: 1rem;
+}
+
+@media only screen and (max-width: 575px) {
+ .posts-block{
+ padding: 3rem 2rem;
+ margin-bottom: 3rem;
+ }
+ .post-block__title{
+ font-size: 2rem;
+ }
+}
\ No newline at end of file
diff --git a/assets/css/MODULE/post-card.css b/assets/css/MODULE/post-card.css
new file mode 100644
index 00000000..a6426e0f
--- /dev/null
+++ b/assets/css/MODULE/post-card.css
@@ -0,0 +1,112 @@
+/**
+ * MODULE - POST CARD
+ */
+
+.posts {
+ margin-left: -0.75rem;
+ margin-right: -0.75rem;
+ background-color: #ffffff;
+}
+
+.posts__swipe-label{
+ text-align: center;
+ width: 100%;
+}
+
+.post-card-cont {
+ height: 100%;
+ width: 100%;
+}
+.post-card:nth-child(1),
+.post-card:nth-child(2),
+.post-card:nth-child(3) {
+ padding-bottom: 0.75rem;
+}
+.post-card:nth-child(4),
+.post-card:nth-child(5),
+.post-card:nth-child(6) {
+ padding-top: 0.75rem;
+}
+.post-card.reset {
+ transition: transform 0.3s;
+ transform: translateX(0) !important;
+}
+.post-card.inactive {
+ transition: transform 0.3s;
+}
+.post-card.to-left {
+ transform: translateX(-30rem) rotate(-30deg) !important;
+}
+.post-card.to-right {
+ transform: translate(30rem) rotate(30deg) !important;
+}
+.post-card.below {
+ z-index: 1;
+}
+.post-card__top {
+ height: 100%;
+ padding: 2rem;
+}
+.post-card__name {
+ line-height: 1.25;
+ text-align: center;
+ font-size: 2rem;
+ font-weight: 600;
+ color: #fff;
+ padding: 1rem;
+ margin: 0;
+}
+.post-card__author {
+ color: #fff;
+ text-align: center;
+ font-size: 1.4rem;
+ padding: 1rem;
+ margin: 0;
+}
+.post-card__content {
+ cursor: pointer;
+}
+
+@media only screen and (max-width: 767px) {
+ .posts{
+ padding: 4rem 1rem;
+ background-color: transparent;
+ }
+ .post-card-cont {
+ position: relative;
+ width: 24rem;
+ min-width: 24rem;
+ height: 32rem;
+ min-height: 32rem;
+ margin: 0 auto;
+ }
+ .post-card {
+ z-index: 2;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ transform-origin: 50% 100%;
+ padding: 0;
+ }
+ .post-card:nth-child(n) {
+ padding: 0;
+ }
+ .post-card__drag {
+ position: block;
+ z-index: 5;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ cursor: grab;
+ }
+}
+
+@media only screen and (max-width: 575px) {
+ .posts__swipe-label{
+ display: none;
+ }
+}
\ No newline at end of file
diff --git a/assets/css/MODULE/post-inline.css b/assets/css/MODULE/post-inline.css
new file mode 100644
index 00000000..7e85ef8e
--- /dev/null
+++ b/assets/css/MODULE/post-inline.css
@@ -0,0 +1,39 @@
+/**
+ * MODULE - POST INLINE
+ */
+
+.posts-inline{
+ padding: 4rem;
+}
+
+.posts-inline__content{
+ background-image: url(/assets/images/svg/anim-false.svg);
+ background-repeat: repeat-x;
+ background-size: auto 0.3rem;
+ background-position: 0 1.8rem;
+ padding-bottom: 0.8rem;
+}
+
+.post-inline__content{
+ padding-bottom: 0.5rem;
+}
+
+.post-inline__name {
+ font-size: 1.2rem;
+}
+
+.post-inline__title{
+ cursor: pointer;
+ font-weight: 600;
+ font-size: 2.2rem;
+ line-height: 5rem;
+}
+
+@media only screen and (max-width: 575px) {
+ .posts-inline{
+ padding: 3rem 2rem;
+ }
+ .post-inline__title{
+ font-size: 2rem;
+ }
+}
\ No newline at end of file
diff --git a/assets/css/MODULE/post-main.css b/assets/css/MODULE/post-main.css
new file mode 100644
index 00000000..7d97fa25
--- /dev/null
+++ b/assets/css/MODULE/post-main.css
@@ -0,0 +1,54 @@
+/**
+ * MODULE - POST MAIN
+ */
+
+.post-main {
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+}
+
+.post-main__author{
+ font-size: 1.6rem;
+ padding-top: 3rem;
+ margin-bottom: 3rem;
+}
+
+.post-main__title{
+ padding: 3rem;
+ margin-bottom: 0;
+ font-size: 4.6rem;
+}
+
+.post-main__line {
+ background-image: url(/assets/images/svg/anim-true.svg);
+ background-size: 100% auto;
+ margin: 0 auto;
+ width: 4px;
+ -webkit-box-flex: 100;
+ -webkit-flex: 100;
+ flex: 100;
+ height: 150px;
+}
+
+.post-main button{
+ font-size: 1.4rem;
+ padding: 0.4rem 1.2rem;
+ margin-top: 3rem;
+ margin-bottom: 3rem;
+}
+
+@media only screen and (max-width: 767px) {
+ .post-main__title{
+ font-size: 3.6rem;
+ }
+}
+
+@media only screen and (max-width: 575px) {
+ .post-main__author{
+ font-size: 1.5rem;
+ }
+ .post-main__title{
+ font-size: 3.2rem;
+ }
+}
\ No newline at end of file
diff --git a/assets/css/MODULE/post-modal.css b/assets/css/MODULE/post-modal.css
new file mode 100644
index 00000000..4fb9bf93
--- /dev/null
+++ b/assets/css/MODULE/post-modal.css
@@ -0,0 +1,48 @@
+/**
+ * MODULE - POST
+ */
+
+.post .btn-close{
+ position: absolute;
+ top: 1.5rem;
+ right: 1.5rem;
+ transform: scale(1.5);
+ z-index: 1100;
+}
+
+.post__content {
+ overflow-y: auto;
+ overflow-x: hidden;
+ min-height: 100%;
+ max-height: 100vh;
+}
+
+.post__title {
+ font-size: 3.6rem;
+}
+
+.post__text {
+ font-size: 2.2rem;
+}
+
+.post__avatar{
+ padding-bottom: 0.5rem;
+}
+
+.post__company-catch-phrase{
+ font-weight: 1rem;
+ border-top: 1px solid var(--grey);
+ margin-top: 2rem;
+ padding-top: 2rem;
+ padding-bottom: 2rem;
+}
+
+@media only screen and (max-width: 575px) {
+ .post__title {
+ font-size: 3.2rem;
+ }
+
+ .post__text {
+ font-size: 2rem;
+ }
+}
\ No newline at end of file
diff --git a/assets/css/MODULE/toggle.css b/assets/css/MODULE/toggle.css
new file mode 100644
index 00000000..e949048c
--- /dev/null
+++ b/assets/css/MODULE/toggle.css
@@ -0,0 +1,57 @@
+/**
+ * MODULE - TOGGLE
+ */
+
+.toggle__wrapper {
+ width: 5rem;
+ display: block;
+}
+
+.toggle {
+ height: 2.6rem;
+ width: 5rem;
+ background: var(--foreground);
+ border-radius: 13px;
+ padding: 4px;
+ position: relative;
+ transition: background var(--transition);
+ cursor: pointer;
+}
+
+.toggle::before {
+ content: "";
+ display: block;
+ height: 1.8rem;
+ width: 1.8rem;
+ border-radius: 9px;
+ background: var(--background);
+ position: absolute;
+ z-index: 2;
+ transform: translate(0);
+ transition: transform var(--transition), background var(--transition);
+}
+
+.toggle.enabled::before {
+ transform: translateX(24px);
+}
+
+.toggle .toggle__input {
+ opacity: 0;
+ position: absolute;
+ top: 0;
+}
+
+.toggle .toggle_icons {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ height: 100%;
+}
+
+.toggle .toggle_icons svg {
+ fill: var(--background);
+ height: 3rem;
+ width: 3rem;
+ z-index: 0;
+ margin: 0 0.5rem;
+}
diff --git a/assets/css/STATUS/dark-mode.css b/assets/css/STATUS/dark-mode.css
new file mode 100644
index 00000000..94f72eba
--- /dev/null
+++ b/assets/css/STATUS/dark-mode.css
@@ -0,0 +1,7 @@
+/**
+ * STATUS - DARK
+ */
+
+.dark-mode::before {
+ transform: translateX(0);
+}
diff --git a/assets/css/THEME/vars.css b/assets/css/THEME/vars.css
new file mode 100644
index 00000000..2dd25377
--- /dev/null
+++ b/assets/css/THEME/vars.css
@@ -0,0 +1,13 @@
+/**
+ * THEME - VARS
+ */
+
+:root {
+ --black: #121212;
+ --white: #f5f5f5;
+ --grey: #d8d8d8;
+ --darkGrey: #424242;
+ --background: var(--black);
+ --foreground: var(--white);
+ --transition: 0.35s ease;
+}
\ No newline at end of file
diff --git a/assets/css/styles.css b/assets/css/styles.css
new file mode 100644
index 00000000..a65f6942
--- /dev/null
+++ b/assets/css/styles.css
@@ -0,0 +1,27 @@
+/**
+ * STYLES
+ */
+
+/* BASE FOLDER */
+@import "BASE/reset.css";
+
+/* LAYOUT FOLDER */
+@import "LAYOUT/common.css";
+
+/* MODULE FOLDER */
+@import "MODULE/header.css";
+@import "MODULE/post-card.css";
+@import "MODULE/toggle.css";
+@import "MODULE/post-main.css";
+@import "MODULE/post-modal.css";
+@import "MODULE/post-inline.css";
+@import "MODULE/post-block.css";
+@import "MODULE/blockquote.css";
+@import "MODULE/modal.css";
+@import "MODULE/comments.css";
+
+/* STATUS FOLDER */
+@import "STATUS/dark-mode.css";
+
+/* THEME FOLDER */
+@import "THEME/vars.css";
diff --git a/data/comments.json b/assets/data/comments.json
similarity index 100%
rename from data/comments.json
rename to assets/data/comments.json
diff --git a/data/db.json b/assets/data/db.json
similarity index 100%
rename from data/db.json
rename to assets/data/db.json
diff --git a/data/posts.json b/assets/data/posts.json
similarity index 100%
rename from data/posts.json
rename to assets/data/posts.json
diff --git a/data/users.json b/assets/data/users.json
similarity index 100%
rename from data/users.json
rename to assets/data/users.json
diff --git a/assets/images/svg/anim-false.svg b/assets/images/svg/anim-false.svg
new file mode 100644
index 00000000..87106faa
--- /dev/null
+++ b/assets/images/svg/anim-false.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/assets/images/svg/anim-true.svg b/assets/images/svg/anim-true.svg
new file mode 100644
index 00000000..364dd186
--- /dev/null
+++ b/assets/images/svg/anim-true.svg
@@ -0,0 +1,21 @@
+
\ No newline at end of file
diff --git a/assets/js/comments.js b/assets/js/comments.js
new file mode 100644
index 00000000..e64989cd
--- /dev/null
+++ b/assets/js/comments.js
@@ -0,0 +1,159 @@
+import { userIcon } from '/assets/js/icons.js';
+
+/**
+ * Fill modal´s comments
+ *
+ * @param {Number} modalId id of modal
+ * @param {String} companyName name of user company
+ */
+async function fillModalComments(modalId, companyName) {
+
+ const comments = await fetch("https://jsonplaceholder.typicode.com/comments") //id del comentario
+ .then(response => response.json())
+
+ const icon = await userIcon(companyName);
+
+ const commentArea = document.getElementById("comments-list");
+
+ commentArea.innerHTML = "";
+
+ for (let index = comments.length; index > 0; index--) {
+
+ const { postId, id, name, body, } = { ...comments[index] };
+ if (postId === modalId) {
+
+ const templateModalComment = `
+
+ ${name} ${body} ${name} ${name}
+
+
+ ${title}
+
+
+ ${title}>
+
${title}
+ ${title}
+