Skip to content

A platform by Ironhackers to Ironhackers to showcase projects done during the bootcamp all around the world! πŸ’» πŸš€ 🌎 ✨ - 2nd Project!

Notifications You must be signed in to change notification settings

lzaquine/Ironhub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

98 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

A platform by Ironhackers to Ironhackers to showcase projects done during the bootcamp all around the world!
πŸ’» πŸš€ 🌎 ✨



User Stories:

  • 404 - As a user, I want to see a nice 404 page when I go to a page that doesn’t exist so that I know it was my fault.
  • 500 - As a user, I want to see a nice error page when the super team screws it up so that I know that is not my fault.
  • Sign up - As a user, I want to sign up.
  • Login - As a user, I want to be able to log in.
  • Logout - As a user, I want to be able to log out.
  • Profile - As a user I want to be able to display my projects and my information.
  • Edit Profile - As a user, I want to be able to edit my profile.
  • Delete Profile - As a user, I want to be able to delete my account.
  • Projects - As a user, I want to be able to see all the projects and comments.
  • New Project - As a user, I want to be able to create a new project.
  • Edit Project - As a user, I want to be able to edit projects.
  • Delete Project - As a user, I want to be able to delete projects.
  • Comments - As a user, I want to be able to leave comments on other projects and receive comments on my projects.
  • Search - As a user, I want to be able to search for other profiles based on the filters I use.
  • Search Result - As a user, I want to be able to see the list of profiles filtered by my preferences.

Server Routes (Back-end):


Method Route Description Request - Body
GET / Login when Logged Out, Search when Logged In route. Renders login login view when logged out and search view when logged in.
POST /login Sends Login form data to the server. { username, password }
GET /logout Logs out the user and redirects to the login.
GET /signup Renders signup form view.
POST /signup Sends Sign Up info to the server and creates user in the DB. { username, name, surname, ironpass, password, campus, course }
GET /profile/:username Private route. Renders profile view for the user profile.
GET /profile/:username/edit-profile Private route. Renders edit-profile view.
POST /profile/:username/edit-profile Sends edit-profile info to server and updates user in DB. { profile picture, username, name, surname, campus, course, location, email, website, linkedin, instagram, bio }
GET /search Private route. Renders search.
GET /search/results Private route. Renders search-results.
GET /:username/projects Private route. Renders project.
GET /:username/projects/new Renders new-project. Private route. View for a specific project page.
POST /:username/projects/new Sends New Project info to the server and creates it. { image, title, description, link }
GET /projects/:projectid/edit-project Private route. Renders edit-project.
POST /projects/:projectid/edit-project Sends Edit Project info to the server and updates it. { image, title, description, link }
GET /projects/:projectid/delete-project Private route. Deletes a project. Redirects user to profile.
POST /:projectId/comments/:username Sends Comments info to the server and creates it. { image, title, description, link }
GET /profile/:username/delete-profile Private route. Deletes user. Redirects user to signup



Models:


User model:
{
  name: {
    type: String,
    required: true,
    trim: true
},
  surname: {
    type: String,
    required: true,
    trim: true
},
  username: {
    type: String,
    required: true,
    unique: true,
    lowercase: true,
    trim: true,
    maxlength: 20
},
  password: {
    type: String,
    required: true
},
  ironpass: {
    type: String,
    required: true,
},
  course: {
    type: String,
    required: true,
    enum: ['Web Dev', 'UX/UI', 'Data Analytics', 'Cybersecurity']
},
  campus: {
    type: String,
    required: true
},
  profilepicture:{
    type: String,
    default: 'url'
},
 location: {
    type: String
},
  email: {
    type: String
},
  website: {
    type: String,
    set: removeHttp
},
  linkedin: {
    type: String,
    set: removeHttp
},
  instagram: {
    type: String,
    set: removeHttp
},
  bio: {
    type: String
},
  projects: [{ type: Schema.Types.ObjectId, ref: 'Project' }],
  comments: [{ type: Schema.Types.ObjectId, ref: "Comment" }]
}

Project model:
{
  author: { type: Schema.Types.ObjectId, ref: "User" },
  image: {
    type: String
},
  title: {
    type: String,
    required: true
},
  description: {
    type: String,
    required: true
},
  link: {
    type: String,
    set: removeHttp
},
  comments: [{ type: Schema.Types.ObjectId, ref: "Comment" }]
}

Comment model:
{
  project: { type: Schema.Types.ObjectId, ref: "Project" },
  author: { type: Schema.Types.ObjectId, ref: 'User' },
  comment: { type: String, required: true }
}



Ironhub

IronHub



Packages:

TailwindCSS

Links:

Repository

Deploy


Contributors:

βš’οΈ Lucas Zaquine - GitHub - LinkedIn

πŸ—Ώ Paulo Torres - GitHub - LinkedIn

About

A platform by Ironhackers to Ironhackers to showcase projects done during the bootcamp all around the world! πŸ’» πŸš€ 🌎 ✨ - 2nd Project!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published