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: client_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;
