Index: client_app/package-lock.json
===================================================================
--- client_app/package-lock.json	(revision be373a82fae27e3be2b6d80810f4a8bc9296a82e)
+++ client_app/package-lock.json	(revision db94dbdf87bb603969c3da96936e020333cf7276)
@@ -1137,4 +1137,12 @@
       "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg=="
     },
+    "@date-fns/upgrade": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/@date-fns/upgrade/-/upgrade-1.0.3.tgz",
+      "integrity": "sha512-0BLzKmXwWw3Zh3cZzW4xScmwGijXCAulaFdikqNiSnK8PAgYYSWWxOP/kuJFpKaoIT5KzstVGyHsjA7t/QXi1Q==",
+      "requires": {
+        "date-fns": "^2.1"
+      }
+    },
     "@eslint/eslintrc": {
       "version": "0.2.2",
@@ -3997,4 +4005,9 @@
       }
     },
+    "classnames": {
+      "version": "2.2.6",
+      "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
+      "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
+    },
     "clean-css": {
       "version": "4.2.3",
@@ -4766,4 +4779,18 @@
         "whatwg-mimetype": "^2.3.0",
         "whatwg-url": "^8.0.0"
+      }
+    },
+    "date-fns": {
+      "version": "2.16.1",
+      "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.16.1.tgz",
+      "integrity": "sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ=="
+    },
+    "dayzed": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/dayzed/-/dayzed-3.2.1.tgz",
+      "integrity": "sha512-3jnjfUOGxGA31iYAR2QfiDzWVfl3ccejm7/ya5P1gYpOtc9b4PEcl0xUAf7f74czEteAC/oPQCspNv/LAJlIYw==",
+      "requires": {
+        "@babel/runtime": "^7.6.2",
+        "date-fns": "^2.0.0"
       }
     },
@@ -6658,4 +6685,9 @@
         "mime-types": "^2.1.12"
       }
+    },
+    "format-string-by-pattern": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/format-string-by-pattern/-/format-string-by-pattern-1.2.1.tgz",
+      "integrity": "sha512-x7JY+q8XvBmHCf4ZSQiiG+8fmC02oiei1JoAsUcdHcy8Kn6LwaE1KUlQ8ph3fNnIcWY65B3aVuKArdbAEQxpLg=="
     },
     "forwarded": {
@@ -12502,4 +12534,34 @@
       }
     },
+    "react-semantic-ui-datepickers": {
+      "version": "2.12.0",
+      "resolved": "https://registry.npmjs.org/react-semantic-ui-datepickers/-/react-semantic-ui-datepickers-2.12.0.tgz",
+      "integrity": "sha512-IlwyruitM42x/EIcb7aZOaJZxl7aWr/ckib+0Xut4cCURQwYz+LiWxWZhVmHmCgT2lZS6QCXDbyfAxvRnXEqww==",
+      "requires": {
+        "@babel/runtime": "7.12.1",
+        "@date-fns/upgrade": "1.0.3",
+        "classnames": "2.2.6",
+        "core-js": "3.6.5",
+        "date-fns": "2.16.1",
+        "dayzed": "3.2.1",
+        "format-string-by-pattern": "1.2.1",
+        "react-fast-compare": "3.2.0"
+      },
+      "dependencies": {
+        "@babel/runtime": {
+          "version": "7.12.1",
+          "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+          "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
+          "requires": {
+            "regenerator-runtime": "^0.13.4"
+          }
+        },
+        "core-js": {
+          "version": "3.6.5",
+          "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz",
+          "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA=="
+        }
+      }
+    },
     "read-pkg": {
       "version": "2.0.0",
Index: client_app/package.json
===================================================================
--- client_app/package.json	(revision be373a82fae27e3be2b6d80810f4a8bc9296a82e)
+++ client_app/package.json	(revision db94dbdf87bb603969c3da96936e020333cf7276)
@@ -12,4 +12,5 @@
     "react-router-dom": "^5.2.0",
     "react-scripts": "4.0.1",
+    "react-semantic-ui-datepickers": "^2.12.0",
     "semantic-ui-css": "^2.4.1",
     "semantic-ui-react": "^2.0.1",
Index: client_app/src/components/main/App.js
===================================================================
--- client_app/src/components/main/App.js	(revision be373a82fae27e3be2b6d80810f4a8bc9296a82e)
+++ client_app/src/components/main/App.js	(revision db94dbdf87bb603969c3da96936e020333cf7276)
@@ -21,4 +21,7 @@
 import EditCompany from "../account_edit/company_edit";
 import EditTeam from "../account_edit/team_edit";
+import JobRegister from "../work_register/job_register";
+import InternshipRegister from "../work_register/internship_register";
+import ProjectRegister from "../work_register/project_register";
 
 class App extends Component{
@@ -55,4 +58,7 @@
                       <Route path={"/company/edit"} render={() => <EditCompany oldUser={this.state.currentUser} updateUser={this.updateUser} message={this.setSuccess}/>}/>
                       <Route path={"/team/edit"} render={() => <EditTeam oldUser={this.state.currentUser} updateUser={this.updateUser} message={this.setSuccess}/>}/>
+                      <Route path={"/register/job"} render={() => <JobRegister accountId={this.state.currentUser.id} type={this.state.currentUser.type} updateJobs={this.updateJobs} />}/>
+                      <Route path={"/register/internship"} render={() => <InternshipRegister accountId={this.state.currentUser.id} type={this.state.currentUser.type} updateInternships={this.updateInternships} />}/>
+                      <Route path={"/register/project"} render={() => <ProjectRegister accountId={this.state.currentUser.id} type={this.state.currentUser.type} updateInternships={this.updateProjects} />}/>
                       <Route path={"/logout"} render={() => <Redirect to={"/login"}/>}/>
                       <Route path={"/"} render={() => <Redirect to={"/login"}/>}/>
@@ -83,4 +89,31 @@
   }
 
+  updateJobs = (job) => {
+      this.setState(prevState => ({
+         currentUser:{
+             ...prevState.currentUser,
+             jobs: [...prevState.currentUser.jobs, job]
+         }
+      }))
+  }
+
+    updateInternships = (internship) => {
+        this.setState(prevState => ({
+            currentUser:{
+                ...prevState.currentUser,
+                internships: [...prevState.currentUser.internships, internship]
+            }
+        }))
+    }
+
+    updateProjects = (project) => {
+        this.setState(prevState => ({
+            currentUser:{
+                ...prevState.currentUser,
+                projects: [...prevState.currentUser.projects, project]
+            }
+        }))
+    }
+
   attemptLogin = (email, password, type) => {
       UserLogin.login(email, password, type).then((res) =>{
Index: client_app/src/components/work/company_internships.js
===================================================================
--- client_app/src/components/work/company_internships.js	(revision be373a82fae27e3be2b6d80810f4a8bc9296a82e)
+++ client_app/src/components/work/company_internships.js	(revision db94dbdf87bb603969c3da96936e020333cf7276)
@@ -10,6 +10,6 @@
             return(
                 <Container textAlign="left">
-                    <Button as={Link} to={"/internships/add"} primary>Add</Button>
-                    <h1>Registered Jobs:</h1>
+                    <Button as={Link} to={"/register/internship"} primary>Add</Button>
+                    <h1>Registered Internships:</h1>
                     {props.userProfile.internships.map(item =>{
                         return <Internships
Index: client_app/src/components/work/company_jobs.js
===================================================================
--- client_app/src/components/work/company_jobs.js	(revision be373a82fae27e3be2b6d80810f4a8bc9296a82e)
+++ client_app/src/components/work/company_jobs.js	(revision db94dbdf87bb603969c3da96936e020333cf7276)
@@ -10,5 +10,5 @@
             return(
                 <Container textAlign="left">
-                    <Button as={Link} to={"/job/add"} primary>Add</Button>
+                    <Button as={Link} to={"/register/job"} primary>Add</Button>
                     <h1>Registered Jobs:</h1>
                     {props.userProfile.jobs.map(item =>{
Index: client_app/src/components/work/team_jobs.js
===================================================================
--- client_app/src/components/work/team_jobs.js	(revision be373a82fae27e3be2b6d80810f4a8bc9296a82e)
+++ client_app/src/components/work/team_jobs.js	(revision db94dbdf87bb603969c3da96936e020333cf7276)
@@ -10,5 +10,5 @@
             return(
                 <Container textAlign="left">
-                    <Button as={Link} to={"/job/add"} primary>Add</Button>
+                    <Button as={Link} to={"/register/job"} primary>Add</Button>
                     <h1>Registered Jobs:</h1>
                     {props.userProfile.jobs.map(item =>{
Index: client_app/src/components/work/team_projects.js
===================================================================
--- client_app/src/components/work/team_projects.js	(revision be373a82fae27e3be2b6d80810f4a8bc9296a82e)
+++ client_app/src/components/work/team_projects.js	(revision db94dbdf87bb603969c3da96936e020333cf7276)
@@ -10,6 +10,6 @@
             return(
                 <Container textAlign="left">
-                    <Button as={Link} to={"/project/add"} primary>Add</Button>
-                    <h1>Registered Jobs:</h1>
+                    <Button as={Link} to={"/register/project"} primary>Add</Button>
+                    <h1>Registered Projects:</h1>
                     {props.userProfile.projects.map(item =>{
                         return <Projects
Index: client_app/src/components/work_register/internship_register.js
===================================================================
--- client_app/src/components/work_register/internship_register.js	(revision db94dbdf87bb603969c3da96936e020333cf7276)
+++ client_app/src/components/work_register/internship_register.js	(revision db94dbdf87bb603969c3da96936e020333cf7276)
@@ -0,0 +1,122 @@
+import React from 'react';
+import 'semantic-ui-react';
+import {Button, Container, Dropdown, Form, Label} from "semantic-ui-react";
+import { Redirect } from 'react-router-dom';
+import SkillFetch from "../../repository/skill_repo";
+import {Component} from "react/cjs/react.production.min";
+import WorkRegister from "../../repository/work_register_repo";
+
+class InternshipRegister extends Component {
+    constructor(props) {
+        super(props);
+        this.state = {
+            title: "",
+            description: "",
+            accountId: props.accountId,
+            salary: 0,
+            type: props.type,
+            openSpots: 0,
+            skillsTrained: [],
+            error: null,
+            success: null,
+            sortedOptions: []
+        }
+        this.attemptInternshipRegister = this.attemptInternshipRegister.bind(this);
+    }
+
+    handleCheck = (e, {value}) => {
+        this.setState({
+            ...this.state,
+            [e.target.name]: value
+        })
+    }
+
+    setSkills = (e, {value}) =>{
+        this.setState({
+            skillsTrained: value
+        })
+    }
+
+    attemptInternshipRegister(){
+        WorkRegister.internshipRegister(
+            this.state.title,
+            this.state.description,
+            this.state.accountId,
+            this.state.salary,
+            this.state.type,
+            this.state.openSpots,
+            this.state.skillsTrained
+        ).then(res => {
+            this.props.updateInternships(res.data);
+            this.setState({
+                success: true,
+                error: null
+            })
+        }).catch(err => {
+            this.setState({
+                error: "Error registering job!",
+                success: null
+            })
+        });
+    }
+
+    render() {
+        if(this.state.accountId==null || this.state.type==="USER"){
+            return(
+                <Redirect to={"/login"}/>
+            );
+        }
+
+        if(this.state.success===true){
+            if(this.state.type==="COMPANY"){
+                return(
+                    <Redirect to={"/company/internships"}/>
+                );
+            }else{
+                return(
+                    <Redirect to={"/profile"}/>
+                );
+            }
+        }
+
+        return (
+            <Container>
+                <h1 style={{color: "red"}}>{this.state.error}</h1>
+                <Form onSubmit={this.attemptInternshipRegister}>
+                    <Form.Input id="title" name="title" type='text' required fluid label='Title'
+                                placeholder='Enter title...' onChange={this.handleCheck}/>
+                    <Form.Input id="description" name="description" type='text' required fluid label='Description'
+                                placeholder='Enter description...' onChange={this.handleCheck}/>
+                    <Form.Input id="salary" name="salary" type='number' required fluid label='Salary'
+                                placeholder='Enter salary...' onChange={this.handleCheck}/>
+                    <Form.Input id="openSpots" name="openSpots" type='number' required fluid label='Open Spots'
+                                placeholder='Enter open spots...' onChange={this.handleCheck}/>
+                    <Label>Select trained skills:</Label>
+                    <Dropdown placeholder="Skills trained on this internship..." fluid multiple selection options={this.state.sortedOptions} onChange={this.setSkills}/>
+                    <br/>
+                    <Button type="submit">Add</Button>
+                </Form>
+            </Container>
+        );
+    }
+
+    componentDidMount(){
+        SkillFetch.fetchAll().then((data) =>{
+            var sorted = [];
+            data.data.forEach(item => {
+                var obj = {
+                    key: item.id,
+                    text: item.name,
+                    value: item.id
+                }
+                sorted.push(obj);
+            });
+
+            this.setState({
+                sortedOptions: sorted
+            })
+        })
+    }
+}
+
+export default InternshipRegister;
Index: client_app/src/components/work_register/job_register.js
===================================================================
--- client_app/src/components/work_register/job_register.js	(revision db94dbdf87bb603969c3da96936e020333cf7276)
+++ client_app/src/components/work_register/job_register.js	(revision db94dbdf87bb603969c3da96936e020333cf7276)
@@ -0,0 +1,118 @@
+import React from 'react';
+import 'semantic-ui-react';
+import {Button, Container, Dropdown, Form, Label} from "semantic-ui-react";
+import { Redirect } from 'react-router-dom';
+import SkillFetch from "../../repository/skill_repo";
+import {Component} from "react/cjs/react.production.min";
+import WorkRegister from "../../repository/work_register_repo";
+
+class JobRegister extends Component {
+    constructor(props) {
+        super(props);
+        this.state = {
+            title: "",
+            description: "",
+            accountId: props.accountId,
+            salary: 0,
+            type: props.type,
+            skillsRequired: [],
+            error: null,
+            success: null,
+            sortedOptions: []
+        }
+        this.attemptJobRegister = this.attemptJobRegister.bind(this);
+    }
+
+    handleCheck = (e, {value}) => {
+        this.setState({
+            ...this.state,
+            [e.target.name]: value
+        })
+    }
+
+    setSkills = (e, {value}) =>{
+        this.setState({
+            skillsRequired: value
+        })
+    }
+
+    attemptJobRegister(){
+        WorkRegister.jobRegister(
+            this.state.title,
+            this.state.description,
+            this.state.accountId,
+            this.state.salary,
+            this.state.type,
+            this.state.skillsRequired
+        ).then(res => {
+            this.props.updateJobs(res.data);
+            this.setState({
+                success: true,
+                error: null
+            })
+        }).catch(err => {
+            this.setState({
+                error: "Error registering job!",
+                success: null
+            })
+        });
+    }
+
+    render() {
+        if(this.state.accountId==null || this.state.type==="USER"){
+            return(
+                <Redirect to={"/login"}/>
+            );
+        }
+
+        if(this.state.success===true){
+            if(this.state.type==="COMPANY"){
+                return(
+                    <Redirect to={"/company/jobs"}/>
+                );
+            }else{
+                return(
+                    <Redirect to={"/team/jobs"}/>
+                );
+            }
+        }
+
+        return (
+            <Container>
+                <h1 style={{color: "red"}}>{this.state.error}</h1>
+                <Form onSubmit={this.attemptJobRegister}>
+                    <Form.Input id="title" name="title" type='text' required fluid label='Title'
+                                placeholder='Enter title...' onChange={this.handleCheck}/>
+                    <Form.Input id="description" name="description" type='text' required fluid label='Description'
+                                placeholder='Enter description...' onChange={this.handleCheck}/>
+                    <Form.Input id="salary" name="salary" type='number' required fluid label='Salary'
+                                placeholder='Enter salary...' onChange={this.handleCheck}/>
+                    <Label>Select required skills:</Label>
+                    <Dropdown placeholder="Skills needed for the job..." fluid multiple selection options={this.state.sortedOptions} onChange={this.setSkills}/>
+                    <br/>
+                    <Button type="submit">Add</Button>
+                </Form>
+            </Container>
+        );
+    }
+
+    componentDidMount(){
+        SkillFetch.fetchAll().then((data) =>{
+            var sorted = [];
+            data.data.forEach(item => {
+                var obj = {
+                    key: item.id,
+                    text: item.name,
+                    value: item.id
+                }
+                sorted.push(obj);
+            });
+
+            this.setState({
+                sortedOptions: sorted
+            })
+        })
+    }
+}
+
+export default JobRegister;
Index: client_app/src/components/work_register/project_register.js
===================================================================
--- client_app/src/components/work_register/project_register.js	(revision db94dbdf87bb603969c3da96936e020333cf7276)
+++ client_app/src/components/work_register/project_register.js	(revision db94dbdf87bb603969c3da96936e020333cf7276)
@@ -0,0 +1,130 @@
+import React from 'react';
+import 'semantic-ui-react';
+import SemanticDatePicker from 'react-semantic-ui-datepickers';
+import {Button, Container, Dropdown, Form, Label} from "semantic-ui-react";
+import { Redirect } from 'react-router-dom';
+import SkillFetch from "../../repository/skill_repo";
+import {Component} from "react/cjs/react.production.min";
+import WorkRegister from "../../repository/work_register_repo";
+
+class ProjectRegister extends Component {
+    constructor(props) {
+        super(props);
+        this.state = {
+            title: "",
+            description: "",
+            accountId: props.accountId,
+            salary: 0,
+            type: props.type,
+            validUntil: "",
+            skillsRequired: [],
+            error: null,
+            success: null,
+            sortedOptions: []
+        }
+        this.attemptProjectRegister = this.attemptProjectRegister.bind(this);
+    }
+
+    handleCheck = (e, {value}) => {
+        this.setState({
+            ...this.state,
+            [e.target.name]: value
+        })
+    }
+    editValid = (e, {value}) => {
+        this.setState({
+            validUntil: value
+        })
+    }
+
+    setSkills = (e, {value}) =>{
+        this.setState({
+            skillsRequired: value
+        })
+    }
+
+    attemptProjectRegister(){
+        WorkRegister.projectRegister(
+            this.state.title,
+            this.state.description,
+            this.state.accountId,
+            this.state.salary,
+            this.state.type,
+            this.state.validUntil,
+            this.state.skillsRequired
+        ).then(res => {
+            console.log(res);
+            // this.props.updateProjects(res.data);
+            // this.setState({
+            //     success: true,
+            //     error: null
+            // })
+        }).catch(err => {
+            console.log(err);
+            this.setState({
+                error: "Error registering job!",
+                success: null
+            })
+        });
+    }
+
+    render() {
+        if(this.state.accountId==null || this.state.type==="USER"){
+            return(
+                <Redirect to={"/login"}/>
+            );
+        }
+
+        if(this.state.success===true){
+            if(this.state.type==="TEAM"){
+                return(
+                    <Redirect to={"/company/jobs"}/>
+                );
+            }else{
+                return(
+                    <Redirect to={"/team/jobs"}/>
+                );
+            }
+        }
+
+        return (
+            <Container>
+                <h1 style={{color: "red"}}>{this.state.error}</h1>
+                <Form onSubmit={this.attemptProjectRegister}>
+                    <Form.Input id="title" name="title" type='text' required fluid label='Title'
+                                placeholder='Enter title...' onChange={this.handleCheck}/>
+                    <Form.Input id="description" name="description" type='text' required fluid label='Description'
+                                placeholder='Enter description...' onChange={this.handleCheck}/>
+                    <Form.Input id="salary" name="salary" type='number' required fluid label='Salary'
+                                placeholder='Enter salary...' onChange={this.handleCheck}/>
+                                <SemanticDatePicker required local="en_US" format='YYYY-MM-DD' onChange={this.editValid} type="basic"/>
+                                <br />
+                    <Label>Select required skills:</Label>
+                    <Dropdown placeholder="Skills needed for the project..." fluid multiple selection options={this.state.sortedOptions} onChange={this.setSkills}/>
+                    <br/>
+                    <Button type="submit">Add</Button>
+                </Form>
+            </Container>
+        );
+    }
+
+    componentDidMount(){
+        SkillFetch.fetchAll().then((data) =>{
+            var sorted = [];
+            data.data.forEach(item => {
+                var obj = {
+                    key: item.id,
+                    text: item.name,
+                    value: item.id
+                }
+                sorted.push(obj);
+            });
+
+            this.setState({
+                sortedOptions: sorted
+            })
+        })
+    }
+}
+
+export default ProjectRegister;
Index: ient_app/src/repository/job_register_repo.js
===================================================================
--- client_app/src/repository/job_register_repo.js	(revision be373a82fae27e3be2b6d80810f4a8bc9296a82e)
+++ 	(revision )
@@ -1,34 +1,0 @@
-// import axios from '../custom_axios/axios';
-//
-// const UserRegister = {
-//     userRegister: (email, password, name, surname, skillsRetained, skillsToLearn) => {
-//         return axios.post("/register/user", {
-//             "email": email,
-//             "password": password,
-//             "name": name,
-//             "surname": surname,
-//             "skillsRetained": skillsRetained,
-//             "skillsToLearn": skillsToLearn
-//         });
-//     },
-//     teamRegister:(email, password, name, members) => {
-//         return axios.post("/register/team",{
-//             "email": email,
-//             "password": password,
-//             "name": name,
-//             "members": members
-//         });
-//     },
-//     companyRegister:(email, password, name, country, city, street) => {
-//         return axios.post("/register/company",{
-//             "email": email,
-//             "password": password,
-//             "name": name,
-//             "country": country,
-//             "city": city,
-//             "street": street
-//         });
-//     },
-// }
-//
-// export default UserRegister;
Index: client_app/src/repository/work_register_repo.js
===================================================================
--- client_app/src/repository/work_register_repo.js	(revision db94dbdf87bb603969c3da96936e020333cf7276)
+++ client_app/src/repository/work_register_repo.js	(revision db94dbdf87bb603969c3da96936e020333cf7276)
@@ -0,0 +1,38 @@
+import axios from '../custom_axios/axios';
+
+const WorkRegister = {
+    jobRegister: (title, description, accId, salary, accType, skillsRequired) => {
+        return axios.post("/register/work/job", {
+            "title": title,
+            "description": description,
+            "accountId": accId,
+            "salary": salary,
+            "type": accType,
+            "skillsRequired": skillsRequired
+        });
+    },
+    internshipRegister:(title, description, accId, salary, accType, openSpots, skillsTrained) => {
+        return axios.post("/register/work/internship",{
+            "title": title,
+            "description": description,
+            "accountId": accId,
+            "salary": salary,
+            "type": accType,
+            "openSpots": openSpots,
+            "skillsTrained": skillsTrained
+        });
+    },
+    projectRegister:(title, description, accId, salary, accType, validUntil, skillsRequired) => {
+        return axios.post("/register/work/project",{
+            "title": title,
+            "description": description,
+            "accountId": accId,
+            "salary": salary,
+            "type": accType,
+            "validUntil": validUntil,
+            "skillsRequired": skillsRequired
+        });
+    },
+}
+
+export default WorkRegister;
