Index: client_app/src/components/main/App.js
===================================================================
--- client_app/src/components/main/App.js	(revision c9fa4744c6fa9e0c5c3a507ae7801fa5182f4e19)
+++ client_app/src/components/main/App.js	(revision 351c43f2a6868f9b3a1e8bd8b24a5f4230e3e687)
@@ -14,4 +14,5 @@
 import TeamJobs from "../work/team_jobs";
 import CompanyInternships from "../work/company_internships";
+import UserRegister from "../../repository/register_repo";
 
 class App extends Component{
@@ -77,4 +78,10 @@
       });
 
+
+
+      registerUser = () =>{
+          UserRegister.userRegister()
+      }
+
       if(this.state.currentUser.email!=null){
           return <Redirect to={"/profile"}/>;
Index: client_app/src/components/register/register_user_form.js
===================================================================
--- client_app/src/components/register/register_user_form.js	(revision 351c43f2a6868f9b3a1e8bd8b24a5f4230e3e687)
+++ client_app/src/components/register/register_user_form.js	(revision 351c43f2a6868f9b3a1e8bd8b24a5f4230e3e687)
@@ -0,0 +1,65 @@
+import React from 'react';
+import { Button, Checkbox, Container, Form } from "semantic-ui-react";
+import { Redirect } from 'react-router-dom';
+import SkillFetch from "../../repository/skill_repo";
+import UserRegister from "../../repository/register_repo";
+
+class RegisterUser extends Component {
+    constructor(props) {
+        super(props);
+        this.state = {
+            email: "",
+            password: "",
+            type: "0",
+            name: "",
+            surname: "",
+            retainedSkills: [],
+            skillsToLearn: [],
+            allSkills: [],
+            error: props.error
+        }
+    }
+
+    render() {
+        return (
+            <Container>
+                <h1 style={{color: "red"}}>{this.state.error}</h1>
+                <Form onSubmit={this.attemptRegister}>
+                    <Form.Input id="email" name="email" type='email' required fluid label='E-mail'
+                                placeholder='Enter e-mail.' onChange={handleCheck}/>
+                    <Form.Input id="password" name="password" type='password' required fluid label='Password'
+                                placeholder='Enter password.' onChange={handleCheck}/>
+                                
+                    <Button type="submit">Register</Button>
+                </Form>
+            </Container>
+        );
+    }
+
+    componentDidMount(){
+        SkillFetch.fetchAll().then((data) =>{
+            this.setState({
+                allSkills: data
+            })
+        })
+    }
+
+    attemptRegister(){
+        UserRegister.userRegister(
+            this.state.email,
+            this.state.password,
+            this.state.name,
+            this.state.surname,
+            this.state.retainedSkills,
+            this.state.skillsToLearn
+        ).then(data => {
+            if(data.success){
+                return <Redirect to={"/login"}/>
+            }else{
+                return <Redirect to={"/user/register"}  error={data.error}/>
+            }
+        })
+    }
+}
+
+export default RegisterUser;
Index: client_app/src/repository/skill_repo.js
===================================================================
--- client_app/src/repository/skill_repo.js	(revision 351c43f2a6868f9b3a1e8bd8b24a5f4230e3e687)
+++ client_app/src/repository/skill_repo.js	(revision 351c43f2a6868f9b3a1e8bd8b24a5f4230e3e687)
@@ -0,0 +1,9 @@
+import axios from '../custom_axios/axios';
+
+const SkillFetch = {
+    fetchAll: () => {
+        return axios.get("/api/skills");
+    }
+}
+
+export default SkillFetch;
Index: src/main/java/it/finki/tinki/service/SkillService.java
===================================================================
--- src/main/java/it/finki/tinki/service/SkillService.java	(revision c9fa4744c6fa9e0c5c3a507ae7801fa5182f4e19)
+++ src/main/java/it/finki/tinki/service/SkillService.java	(revision 351c43f2a6868f9b3a1e8bd8b24a5f4230e3e687)
@@ -8,3 +8,4 @@
     List<Skill> returnSkillsBasedOnId(List<Long> skillIds);
     List<Skill> returnBasedOnText(String text);
+    List<Skill> findAll();
 }
Index: src/main/java/it/finki/tinki/service/impl/SkillServiceImpl.java
===================================================================
--- src/main/java/it/finki/tinki/service/impl/SkillServiceImpl.java	(revision c9fa4744c6fa9e0c5c3a507ae7801fa5182f4e19)
+++ src/main/java/it/finki/tinki/service/impl/SkillServiceImpl.java	(revision 351c43f2a6868f9b3a1e8bd8b24a5f4230e3e687)
@@ -33,3 +33,8 @@
         return this.skillRepository.findAllByNameContaining(text);
     }
+
+    @Override
+    public List<Skill> findAll() {
+        return this.skillRepository.findAll();
+    }
 }
Index: src/main/java/it/finki/tinki/web/controller/SkillController.java
===================================================================
--- src/main/java/it/finki/tinki/web/controller/SkillController.java	(revision 351c43f2a6868f9b3a1e8bd8b24a5f4230e3e687)
+++ src/main/java/it/finki/tinki/web/controller/SkillController.java	(revision 351c43f2a6868f9b3a1e8bd8b24a5f4230e3e687)
@@ -0,0 +1,24 @@
+package it.finki.tinki.web.controller;
+
+import it.finki.tinki.model.Skill;
+import it.finki.tinki.service.SkillService;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@CrossOrigin("http://localhost:3000")
+@RequestMapping("/api/skills")
+public class SkillController {
+
+    SkillService skillService;
+
+    public SkillController(SkillService skillService) {
+        this.skillService = skillService;
+    }
+
+    @GetMapping()
+    public List<Skill> returnSkills(){
+        return this.skillService.findAll();
+    }
+}
