diff --git a/src/Admin/Components/Components/DataCards/ActionCard.js b/src/Admin/Components/Components/DataCards/ActionCard.js
new file mode 100644
index 0000000000000000000000000000000000000000..d240b498fd3a2054e51dd881ee5a2d6f27aed67a
--- /dev/null
+++ b/src/Admin/Components/Components/DataCards/ActionCard.js
@@ -0,0 +1,289 @@
+/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre
+Departamento de Informatica - Universidade Federal do Parana
+
+This file is part of Plataforma Integrada MEC.
+
+Plataforma Integrada MEC is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Plataforma Integrada MEC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with Plataforma Integrada MEC.  If not, see <http://www.gnu.org/licenses/>.*/
+
+import React, { useState, useEffect } from "react";
+import moment from "moment";
+// Maerial ui components
+import Card from "@material-ui/core/Card";
+import CardContent from "@material-ui/core/CardContent";
+import Typography from "@material-ui/core/Typography";
+import Button from "@material-ui/core/Button";
+import ListRoundedIcon from "@material-ui/icons/ListRounded";
+import { useStyles } from "../../Styles/DataCard";
+import Grid from "@material-ui/core/Grid";
+import DeleteRoundedIcon from '@material-ui/icons/DeleteRounded';
+// Icons
+import EditRoundedIcon from "@material-ui/icons/EditRounded";
+//imports from local files
+import { GetAData, DeleteFilter } from "../../../Filters";
+import { Link, useHistory } from "react-router-dom";
+import LoadingSpinner from "../../../../Components/LoadingSpinner";
+import SnackBar from "../../../../Components/SnackbarComponent";
+import {
+  getRequest,
+  deleteRequest,
+} from "../../../../Components/HelperFunctions/getAxiosConfig";
+import styled from 'styled-components'
+import { GrAction } from 'react-icons/gr'
+
+const AchievementCard = ({ match }) => {
+  let history = useHistory();
+  const classes = useStyles();
+  const WINDOW_WIDTH = window.innerWidth
+  const [error, setError] = useState(false) //Necessary to consult the API, catch errors
+  const [isLoaded, setIsLoaded] = useState(false) //Necessary to consult the API, wait until complete
+  const [item, setItem] = useState()
+  const [reloadPage, setReloadPage] = useState(false);
+  const [snackInfo, setSnackInfo] = useState({
+    message: "",
+    icon: "",
+    open: false,
+    color: "",
+  });
+
+  const DisplayDate = (date) => {
+    const convertedData = moment.utc(date);
+    return moment(convertedData)
+      .format("LLL")
+      .toString();
+  };
+
+  const HandleSnack = (message, state, icon, color) => {
+    setSnackInfo({
+      message: message,
+      icon: icon,
+      open: state,
+      color: color,
+    });
+  };
+
+  const deleteHandler = () => {
+    deleteRequest(
+      DeleteFilter("actions", item.id),
+      (data) => {
+        if (data.errors)
+          HandleSnack("Ocorreu algum erro", true, "warning", "#FA8072");
+        else {
+          HandleSnack(
+            "O item foi deletada com sucesso",
+            true,
+            "success",
+            "#228B22"
+          );
+        }
+        history.goBack()
+      },
+      (error) => {
+        HandleSnack("Ocorreu algum erro", true, "warning", "#FA8072");
+      }
+    )
+  }
+
+  useEffect(() => {
+    setIsLoaded(false)
+    getRequest(
+      GetAData("actions", match.params.id),
+      (data, header) => {
+        setItem(data);
+        setIsLoaded(true);
+        setError(false);
+      },
+      (error) => {
+        setIsLoaded(true);
+        setError(true);
+      }
+    );
+  }, [reloadPage]);
+
+  if (error) {
+    return <div>Houve um erro</div>;
+  } else if (!isLoaded) {
+    return <LoadingSpinner text="Carregando..." />;
+  } else {
+    return (
+      <>
+        <SnackBar
+          severity={snackInfo.icon}
+          text={snackInfo.message}
+          snackbarOpen={snackInfo.open}
+          color={snackInfo.color}
+          handleClose={() =>
+            setSnackInfo({
+              message: "",
+              icon: "",
+              open: false,
+              color: "",
+            })
+          }
+        />
+        <Grid container direction="row" spacing={1}>
+          <Grid item xs={12}>
+            <Card>
+              <CardContent>
+                <Grid
+                  xs={12}
+                  justify="space-between"
+                  alignItems="center"
+                  container
+                >
+                  <Grid item>
+                    <Typography
+                      className={classes.title}
+                      color="inherit"
+                      gutterBottom
+                    >
+                      Informações da ação
+                    </Typography>
+                  </Grid>
+                  <Grid item>
+                    <Link
+                      style={{ textDecoration: "none" }}
+                      to={`/admin/actions`}
+                    >
+                      <Button
+                        startIcon={<ListRoundedIcon />}
+                        color="primary"
+                        variant="outlined"
+                      >
+                        Listar
+                      </Button>
+                    </Link>
+                    <Link
+                      to={`/admin/EditAction/${match.params.id}`}
+                      style={{ textDecoration: "none" }}
+                    >
+                      <Button
+                        startIcon={<EditRoundedIcon />}
+                        color="primary"
+                        variant="outlined"
+                      >
+                        Editar
+                      </Button>
+                    </Link>
+                    <Button
+                      startIcon={<DeleteRoundedIcon />}
+                      color="secondary"
+                      variant="outlined"
+                      onClick={deleteHandler}
+                    >
+                      Deletar
+                    </Button>
+                  </Grid>
+                </Grid>
+                <div style={{ height: "1em" }} />
+                <Grid container direction="row" spacing={3}>
+                  <Grid item sm={5} xs={12} style={WINDOW_WIDTH >= 600 ? {
+                    borderRight: "solid #d4d4d4 1px"
+                  } : {
+                      borderBottom: "solid #d4d4d4 1px"
+                    }}>
+                    <ImgDiv>
+                      <GrAction size={200} color="#00bcd4" />
+                    </ImgDiv>
+                  </Grid>
+                  <Grid item sm={7} xs={12}>
+                    <Grid container direction="column" spacing={1}>
+                      <Grid item>
+                        <Typography
+                          color="initial"
+                          className={classes.subTitle}
+                        >
+                          Nome
+                        </Typography>
+                        <Typography color="textSecondary">
+                          {item.name}
+                        </Typography>
+                      </Grid>
+                      <Grid item>
+                        <Typography
+                          color="initial"
+                          className={classes.subTitle}
+                        >
+                          Criado em
+                                                </Typography>
+                        <Typography color="textSecondary">
+                          {DisplayDate(item.created_at)}
+                        </Typography>
+                      </Grid>
+                      <Grid item>
+                        <Typography
+                          color="initial"
+                          className={classes.subTitle}
+                        >
+                          Atualizado em
+                                                </Typography>
+                        <Typography color="textSecondary">
+                          {DisplayDate(item.updated_at)}
+                        </Typography>
+                      </Grid>
+                      <Grid item>
+                        <Typography color="initial" className={classes.subTitle}>
+                          Descrição
+                        </Typography>
+                        <Typography color="textSecondary">
+                          {item.description}
+                        </Typography>
+                      </Grid>
+                    </Grid>
+                  </Grid>
+                </Grid>
+                {
+                  item.requirements.length >= 1 ?
+                    <Grid container direction="column" spacing={1}>
+                      <Grid item>
+                        <Typography color="initial" className={classes.subTitle}>
+                          Requisitos que dependem dessa ação
+                    </Typography>
+                        <Typography color="textSecondary">
+                          <ul>
+                            {
+                              item.requirements.map((require) => {
+                                return (
+                                  <li key={require.created_at}>
+                                    <Link to={`/admin/requirement/${require.id}`}>
+                                      <a style={{ textDecoration: 'none', color: "#00bcd4" }}>
+                                        {require.description}
+                                      </a>
+                                    </Link>
+                                  </li>
+                                )
+                              })
+                            }
+                          </ul>
+                        </Typography>
+                      </Grid>
+                    </Grid> : null
+                }
+              </CardContent>
+            </Card>
+          </Grid>
+        </Grid>
+      </>
+    );
+  }
+};
+
+export default AchievementCard;
+
+const ImgDiv = styled.div`
+  display: flex; 
+  justify-content: center; 
+  align-items: center;
+  height: 100%; 
+  width: 100%;
+`
diff --git a/src/Admin/Components/Components/Inputs/CreateAction.js b/src/Admin/Components/Components/Inputs/CreateAction.js
new file mode 100644
index 0000000000000000000000000000000000000000..1124da0db0c94def7e089b84c9aec83cbd55c69b
--- /dev/null
+++ b/src/Admin/Components/Components/Inputs/CreateAction.js
@@ -0,0 +1,308 @@
+/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre
+Departamento de Informatica - Universidade Federal do Parana
+
+This file is part of Plataforma Integrada MEC.
+
+Plataforma Integrada MEC is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Plataforma Integrada MEC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with Plataforma Integrada MEC.  If not, see <http://www.gnu.org/licenses/>.*/
+
+import React, { useState, useContext, useEffect } from 'react'
+//imports material ui componets
+import Card from "@material-ui/core/Card"
+import CardContent from "@material-ui/core/CardContent"
+import CardAction from '@material-ui/core/CardActions'
+import { Typography, TextField, Button, Grid } from '@material-ui/core'
+import CircularProgress from '@material-ui/core/CircularProgress'
+import AddRoundedIcon from '@material-ui/icons/AddRounded'
+import ListRoundedIcon from '@material-ui/icons/ListRounded'
+import MenuItem from "@material-ui/core/MenuItem"
+//imports local files
+import SnackBar from '../../../../Components/SnackbarComponent'
+import { Store } from '../../../../Store'
+import Unauthorized from '../Unauthorized'
+import { postRequest } from "../../../../Components/HelperFunctions/getAxiosConfig"
+//router
+import { Link } from 'react-router-dom'
+
+const CreateAction = () => {
+  const { state } = useContext(Store)
+
+  const [name, setName] = useState('Criar Item')
+  const [description, setDescription] = useState('')
+  const [rewardXP, setRewardXP] = useState('')
+
+  const [isLoading, setIsLoading] = useState(false)
+
+  const [errorInName, setErrorInName] = useState({
+    error: false,
+    message: '',
+  })
+  const [errorInDescription, setErrorInDescription] = useState({
+    error: false,
+    message: '',
+  })
+  const [errorInRewardXP, setErrorInRewardXP] = useState({
+    error: false,
+    message: '',
+  })
+
+  const [snackInfo, setSnackInfo] = useState({
+    message: '',
+    icon: '',
+    open: false,
+    color: '',
+  })
+
+  const NameHandler = (e) => {
+    if (errorInName.error) {
+      setErrorInName({
+        error: false,
+        message: ''
+      })
+    }
+    setName(e.target.value)
+  }
+  const DescriptionHandler = (e) => {
+    if (errorInDescription.error)
+      setErrorInDescription({
+        error: false,
+        message: ''
+      })
+    setDescription(e.target.value)
+  }
+  const rewardXPHandler = (e) => {
+    if (errorInRewardXP.error)
+      setErrorInRewardXP({
+        error: false,
+        message: ''
+      })
+    setRewardXP(e.target.value)
+  }
+
+  // Handle snack infos
+  const HandleSnack = (message, state, icon, color) => {
+    setSnackInfo({
+      message: message,
+      icon: icon,
+      open: state,
+      color: color
+    })
+  }
+
+  const CheckUserPermission = () => {
+    let canUserEdit = false
+
+    if (state.userIsLoggedIn) {
+      const roles = [...state.currentUser.roles]
+      for (let i = 0; i < roles.length; i++)
+        if (roles[i].name === 'admin' || roles[i].name === 'editor')
+          canUserEdit = true
+    }
+    else {
+      canUserEdit = false
+    }
+
+    return canUserEdit
+  }
+
+
+  //Handle submit 
+  async function onSubmit() {
+    setIsLoading(true)
+    const api = `/actions`
+    const body = {
+      "action_params": {
+        "name": name,
+        "description": description,
+        "reward_experience": rewardXP ? parseInt(rewardXP) : 0,
+      }
+    }
+    postRequest(
+      api,
+      body,
+      (data) => {
+        if (data.id)
+          HandleSnack('O item foi alterado com sucesso!', true, 'success', '#228B22')
+        else {
+          if (data.errors) {
+            HandleSnack(`${data.errors[0]}`, true, 'warning', '#FA8072')
+          }
+          if (data.name) {
+            let nameError = ""
+            data.name.map((msg) => (
+              nameError = nameError + msg + " e "
+            ))
+            setErrorInName({
+              error: true,
+              message: nameError
+            })
+          }
+          if (data.description) {
+            let descriptionError = ""
+            data.description.map((msg) => (
+              descriptionError = descriptionError + msg + " e "
+            ))
+            setErrorInDescription({
+              error: true,
+              message: descriptionError
+            })
+          }
+          if (data.reward_experience) {
+            let reward_experienceError = ""
+            data.reward_experience.map((msg) => (
+              reward_experienceError = reward_experienceError + msg + " e "
+            ))
+            setErrorInRewardXP({
+              error: true,
+              message: reward_experienceError
+            })
+          }
+        }
+        setIsLoading(false)
+      },
+      (error) => {
+        HandleSnack('Ocorreu algum erro', true, 'warning', '#FA8072')
+        setIsLoading(false)
+      }
+    )
+  }
+
+  // Fields
+  const fields = [
+    {
+      select: false,
+      label: 'Nome',
+      value: name,
+      required: true,
+      error: errorInName.error,
+      errorMessage: errorInName.message,
+      onChange: (event) => NameHandler(event)
+    },
+    {
+      select: false,
+      label: 'Descrição',
+      value: description,
+      required: false,
+      error: errorInDescription.error,
+      errorMessage: errorInDescription.message,
+      onChange: (event) => DescriptionHandler(event)
+    },
+    {
+      select: false,
+      label: 'Experiência ganha',
+      value: rewardXP,
+      error: errorInRewardXP.error,
+      errorMessage: errorInRewardXP.message,
+      required: false,
+      onChange: (event) => rewardXPHandler(event)
+    },
+  ]
+
+  if (CheckUserPermission()) {
+    return (
+      <Card>
+        <SnackBar
+          severity={snackInfo.icon}
+          text={snackInfo.message}
+          snackbarOpen={snackInfo.open}
+          color={snackInfo.color}
+          handleClose={() => setSnackInfo({
+            message: '',
+            icon: '',
+            open: false,
+            color: ''
+          })}
+        />
+        <CardContent>
+          <Grid container direction='row' justify='space-between' alignContent="center" alignItems="center" xs={12}>
+            <Grid item>
+              <Typography variant='h4'>
+                {name}
+              </Typography>
+            </Grid>
+            <Grid item>
+              <Link style={{ textDecoration: 'none' }} to={'/admin/actions'}>
+                <Button
+                  // onClick={props.BackToList}
+                  startIcon={<ListRoundedIcon />}
+                  variant='outlined'
+                  color='primary'
+                >
+                  Listar
+                </Button>
+              </Link>
+            </Grid>
+          </Grid>
+
+          <div style={{ height: '1em' }}></div>
+          <form style={{ display: 'flex', flexDirection: 'column' }}>
+            {fields.map((field, index) => (
+              field.select ?
+                <TextField
+                  select
+                  key={index}
+                  required={field.required}
+                  error={field.error}
+                  helperText={field.error ? field.errorMessage : ''}
+                  style={{ width: '250px', marginBottom: '1em' }}
+                  label={field.label}
+                  value={field.value}
+                  onChange={field.onChange}
+                  type="search"
+                  multiline={true}
+                >
+                  {field.options.map((option, index) => (
+                    <MenuItem
+                      key={option.value}
+                      value={option.name}
+                      name={option.value}
+                    >
+                      {option.value}
+                    </MenuItem>
+                  ))}
+                </TextField>
+                :
+                <TextField
+                  key={index}
+                  required={field.required}
+                  error={field.error}
+                  helperText={field.error ? field.errorMessage : ''}
+                  style={{ width: '250px', marginBottom: '1em' }}
+                  label={field.label}
+                  value={field.value}
+                  onChange={field.onChange}
+                  type="search"
+                  multiline={true}
+                />
+            ))}
+          </form>
+        </CardContent>
+        <CardAction>
+          <Button
+            onClick={onSubmit}
+            variant="contained"
+            color="primary"
+            disabled={isLoading}
+            startIcon={isLoading ? null : <AddRoundedIcon />}
+          >
+            {
+              isLoading ? <CircularProgress size={24} /> : 'Editar'
+            }
+          </Button>
+        </CardAction>
+      </Card>
+    )
+  } else return <Unauthorized />
+}
+
+export default CreateAction
\ No newline at end of file
diff --git a/src/Admin/Components/Components/Inputs/EditAction.js b/src/Admin/Components/Components/Inputs/EditAction.js
new file mode 100644
index 0000000000000000000000000000000000000000..fbc928b727ee91edaaecdebc1f406bd912788434
--- /dev/null
+++ b/src/Admin/Components/Components/Inputs/EditAction.js
@@ -0,0 +1,332 @@
+/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre
+Departamento de Informatica - Universidade Federal do Parana
+
+This file is part of Plataforma Integrada MEC.
+
+Plataforma Integrada MEC is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Plataforma Integrada MEC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with Plataforma Integrada MEC.  If not, see <http://www.gnu.org/licenses/>.*/
+
+import React, { useState, useContext, useEffect } from 'react'
+//imports material ui componets
+import Card from "@material-ui/core/Card"
+import CardContent from "@material-ui/core/CardContent"
+import CardAction from '@material-ui/core/CardActions'
+import { Typography, TextField, Button, Grid } from '@material-ui/core'
+import CircularProgress from '@material-ui/core/CircularProgress'
+import AddRoundedIcon from '@material-ui/icons/AddRounded'
+import ListRoundedIcon from '@material-ui/icons/ListRounded'
+import MenuItem from "@material-ui/core/MenuItem"
+//imports local files
+import SnackBar from '../../../../Components/SnackbarComponent'
+import { Store } from '../../../../Store'
+import Unauthorized from '../Unauthorized'
+import { getRequest, putRequest } from "../../../../Components/HelperFunctions/getAxiosConfig"
+import LoadingSpinner from '../../../../Components/LoadingSpinner'
+import { GetAData } from '../../../Filters'
+//router
+import { Link } from 'react-router-dom'
+
+const EditAction = ({ match }) => {
+  const { state } = useContext(Store)
+
+  const [name, setName] = useState('Editar Item')
+  const [description, setDescription] = useState('')
+  const [rewardXP, setRewardXP] = useState('')
+
+  const [isLoading, setIsLoading] = useState(false)
+  const [isLoaded, setIsLoaded] = useState(false)
+  const [error, setError] = useState(false)
+
+  const [errorInName, setErrorInName] = useState({
+    error: false,
+    message: '',
+  })
+  const [errorInDescription, setErrorInDescription] = useState({
+    error: false,
+    message: '',
+  })
+  const [errorInRewardXP, setErrorInRewardXP] = useState({
+    error: false,
+    message: '',
+  })
+
+  const [snackInfo, setSnackInfo] = useState({
+    message: '',
+    icon: '',
+    open: false,
+    color: '',
+  })
+
+  const NameHandler = (e) => {
+    if (errorInName.error) {
+      setErrorInName({
+        error: false,
+        message: ''
+      })
+    }
+    setName(e.target.value)
+  }
+  const DescriptionHandler = (e) => {
+    if (errorInDescription.error)
+      setErrorInDescription({
+        error: false,
+        message: ''
+      })
+    setDescription(e.target.value)
+  }
+  const rewardXPHandler = (e) => {
+    if (errorInRewardXP.error)
+      setErrorInRewardXP({
+        error: false,
+        message: ''
+      })
+    setRewardXP(e.target.value)
+  }
+
+  // Handle snack infos
+  const HandleSnack = (message, state, icon, color) => {
+    setSnackInfo({
+      message: message,
+      icon: icon,
+      open: state,
+      color: color
+    })
+  }
+
+  const CheckUserPermission = () => {
+    let canUserEdit = false
+
+    if (state.userIsLoggedIn) {
+      const roles = [...state.currentUser.roles]
+      for (let i = 0; i < roles.length; i++)
+        if (roles[i].name === 'admin' || roles[i].name === 'editor')
+          canUserEdit = true
+    }
+    else {
+      canUserEdit = false
+    }
+
+    return canUserEdit
+  }
+
+
+  //Handle submit 
+  async function onSubmit() {
+    setIsLoading(true)
+    const api = `/actions/${match.params.id}`
+    const body = {
+      "action_params": {
+        "name": name,
+        "description": description,
+        "reward_experience": rewardXP ? parseInt(rewardXP) : 0,
+      }
+    }
+    putRequest(
+      api,
+      body,
+      (data) => {
+        if (data.id)
+          HandleSnack('O item foi alterado com sucesso!', true, 'success', '#228B22')
+        else {
+          if (data.errors) {
+            HandleSnack(`${data.errors[0]}`, true, 'warning', '#FA8072')
+          }
+          if (data.name) {
+            let nameError = ""
+            data.name.map((msg) => (
+              nameError = nameError + msg + " e "
+            ))
+            setErrorInName({
+              error: true,
+              message: nameError
+            })
+          }
+          if (data.description) {
+            let descriptionError = ""
+            data.description.map((msg) => (
+              descriptionError = descriptionError + msg + " e "
+            ))
+            setErrorInDescription({
+              error: true,
+              message: descriptionError
+            })
+          }
+          if (data.reward_experience) {
+            let reward_experienceError = ""
+            data.reward_experience.map((msg) => (
+              reward_experienceError = reward_experienceError + msg + " e "
+            ))
+            setErrorInRewardXP({
+              error: true,
+              message: reward_experienceError
+            })
+          }
+        }
+        setIsLoading(false)
+      },
+      (error) => {
+        HandleSnack('Ocorreu algum erro', true, 'warning', '#FA8072')
+        setIsLoading(false)
+      }
+    )
+  }
+
+  // Fields
+  const fields = [
+    {
+      select: false,
+      label: 'Nome',
+      value: name,
+      required: true,
+      error: errorInName.error,
+      errorMessage: errorInName.message,
+      onChange: (event) => NameHandler(event)
+    },
+    {
+      select: false,
+      label: 'Descrição',
+      value: description,
+      required: false,
+      error: errorInDescription.error,
+      errorMessage: errorInDescription.message,
+      onChange: (event) => DescriptionHandler(event)
+    },
+    {
+      select: false,
+      label: 'Experiência ganha',
+      value: rewardXP,
+      error: errorInRewardXP.error,
+      errorMessage: errorInRewardXP.message,
+      required: false,
+      onChange: (event) => rewardXPHandler(event)
+    },
+  ]
+
+  useEffect(() => {
+    getRequest(
+      GetAData("actions", match.params.id),
+      (data, header) => {
+        setName(data.name)
+        setDescription(data.description)
+        setIsLoaded(true)
+        setError(false)
+      },
+      (error) => {
+        setIsLoaded(true)
+        setError(true)
+      }
+    )
+  }, [])
+
+  if (error) {
+    return <div> Error... </div>
+  } else if (!isLoaded) {
+    return <LoadingSpinner text="Carregando..." />
+  } else if (CheckUserPermission()) {
+    return (
+      <Card>
+        <SnackBar
+          severity={snackInfo.icon}
+          text={snackInfo.message}
+          snackbarOpen={snackInfo.open}
+          color={snackInfo.color}
+          handleClose={() => setSnackInfo({
+            message: '',
+            icon: '',
+            open: false,
+            color: ''
+          })}
+        />
+        <CardContent>
+          <Grid container direction='row' justify='space-between' alignContent="center" alignItems="center" xs={12}>
+            <Grid item>
+              <Typography variant='h4'>
+                {name}
+              </Typography>
+            </Grid>
+            <Grid item>
+              <Link style={{ textDecoration: 'none' }} to={'/admin/actions'}>
+                <Button
+                  // onClick={props.BackToList}
+                  startIcon={<ListRoundedIcon />}
+                  variant='outlined'
+                  color='primary'
+                >
+                  Listar
+                </Button>
+              </Link>
+            </Grid>
+          </Grid>
+
+          <div style={{ height: '1em' }}></div>
+          <form style={{ display: 'flex', flexDirection: 'column' }}>
+            {fields.map((field, index) => (
+              field.select ?
+                <TextField
+                  select
+                  key={index}
+                  required={field.required}
+                  error={field.error}
+                  helperText={field.error ? field.errorMessage : ''}
+                  style={{ width: '250px', marginBottom: '1em' }}
+                  label={field.label}
+                  value={field.value}
+                  onChange={field.onChange}
+                  type="search"
+                  multiline={true}
+                >
+                  {field.options.map((option, index) => (
+                    <MenuItem
+                      key={option.value}
+                      value={option.name}
+                      name={option.value}
+                    >
+                      {option.value}
+                    </MenuItem>
+                  ))}
+                </TextField>
+                :
+                <TextField
+                  key={index}
+                  required={field.required}
+                  error={field.error}
+                  helperText={field.error ? field.errorMessage : ''}
+                  style={{ width: '250px', marginBottom: '1em' }}
+                  label={field.label}
+                  value={field.value}
+                  onChange={field.onChange}
+                  type="search"
+                  multiline={true}
+                />
+            ))}
+          </form>
+        </CardContent>
+        <CardAction>
+          <Button
+            onClick={onSubmit}
+            variant="contained"
+            color="primary"
+            disabled={isLoading}
+            startIcon={isLoading ? null : <AddRoundedIcon />}
+          >
+            {
+              isLoading ? <CircularProgress size={24} /> : 'Editar'
+            }
+          </Button>
+        </CardAction>
+      </Card>
+    )
+  } else return <Unauthorized />
+}
+
+export default EditAction
\ No newline at end of file
diff --git a/src/Admin/Pages/Pages/SubPages/GameficationActions.js b/src/Admin/Pages/Pages/SubPages/GameficationActions.js
new file mode 100644
index 0000000000000000000000000000000000000000..c066b0c1eddecbb56d37bf3a308dbd192abf5aa2
--- /dev/null
+++ b/src/Admin/Pages/Pages/SubPages/GameficationActions.js
@@ -0,0 +1,569 @@
+/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre
+Departamento de Informatica - Universidade Federal do Parana
+
+This file is part of Plataforma Integrada MEC.
+
+Plataforma Integrada MEC is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Plataforma Integrada MEC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with Plataforma Integrada MEC.  If not, see <http://www.gnu.org/licenses/>.*/
+
+import React, { useContext, useEffect, useState } from "react";
+import moment from "moment";
+import Unauthorized from "../../../Components/Components/Unauthorized";
+import { Store } from "../../../../Store";
+import { Link, useHistory } from "react-router-dom";
+import { getRequest, deleteRequest, putRequest } from "../../../../Components/HelperFunctions/getAxiosConfig";
+import { Url, DeleteFilter, EditFilter } from "../../../Filters";
+import UpdateRoundedIcon from "@material-ui/icons/UpdateRounded";
+import { withStyles } from "@material-ui/core/styles";
+import AddRoundedIcon from "@material-ui/icons/AddRounded";
+import FilterListRoundedIcon from "@material-ui/icons/FilterListRounded";
+import VisibilityIcon from "@material-ui/icons/Visibility";
+import LoadingSpinner from "../../../../Components/LoadingSpinner";
+import PageHeader from "../../../Components/Components/PageHeader";
+import SnackBar from "../../../../Components/SnackbarComponent";
+import TableData from "../../../Components/Components/Table";
+import TextField from "@material-ui/core/TextField";
+import MenuItem from "@material-ui/core/MenuItem";
+import TableBody from "@material-ui/core/TableBody";
+import TableCell from "@material-ui/core/TableCell";
+import TableRow from "@material-ui/core/TableRow";
+import Button from "@material-ui/core/Button";
+import CircularProgress from "@material-ui/core/CircularProgress";
+import Paper from "@material-ui/core/Paper";
+import MobilePageHeader from "../../../Components/Components/MobileComponents/MobilePageHeader"
+import styled from 'styled-components'
+import MobileList from "../../../Components/Components/MobileComponents/SimpleList"
+import { Grid } from "@material-ui/core";
+import AlertDialog from "../../../Components/Components/AlertDialog"
+import { GrAction } from 'react-icons/gr'
+import DeleteRoundedIcon from '@material-ui/icons/DeleteRounded';
+
+const StyledTableCell = withStyles((theme) => ({
+  head: {
+    backgroundColor: theme.palette.common.black,
+    color: theme.palette.common.white,
+  },
+  body: {
+    fontSize: 14,
+  },
+}))(TableCell);
+
+const StyledTableRow = withStyles((theme) => ({
+  root: {
+    "&:nth-of-type(odd)": {
+      backgroundColor: theme.palette.action.hover,
+    },
+  },
+}))(TableRow);
+
+const GameficationActions = () => {
+  const history = useHistory()
+  const WINDOW_WIDTH = window.innerWidth
+  const ADD_ONE_LENGHT = [""];
+  const TOP_LABELS = [
+    "ID",
+    "NAME",
+    "DESCRIÇÃO",
+    "CRIADO EM",
+    "ATUALIZADO EM",
+    "AÇÕES"
+  ]; //Labels from Table
+  const { state } = useContext(Store);
+  const [currPage, setcurrPage] = useState(0);
+  const [error, setError] = useState(false);
+  const [loaded, setLoaded] = useState(true);
+  const [isLoadingMoreItems, setIsLoadingMoreItems] = useState(false);
+  const [showFilter, setShowFilter] = useState(false);
+  const [items, setItems] = useState([]);
+  const [stateOpt, setStateOpt] = useState(1)
+  const [descricao, setDescricao] = useState("")
+  const [valueDescricaoField, setValueDescricaoField] = useState("")
+  const [name, setName] = useState("")
+  const [valueNameField, setValueNameField] = useState("")
+  const [open, setOpen] = useState(false)
+  const [deleteItem, setDeleteItem] = useState({})
+  const [snackInfo, setSnackInfo] = useState({
+    message: "",
+    icon: "",
+    open: false,
+    color: "",
+  });
+
+  //handle snack info
+  const HandleSnack = (message, state, icon, color) => {
+    setSnackInfo({
+      message: message,
+      icon: icon,
+      open: state,
+      color: color,
+    });
+  };
+
+  const CheckUserPermission = () => {
+    let canUserEdit = false;
+
+    if (state.userIsLoggedIn) {
+      const roles = [...state.currentUser.roles];
+      for (let i = 0; i < roles.length; i++)
+        if (roles[i].name === "admin" || roles[i].name === "editor")
+          canUserEdit = true;
+    } else {
+      canUserEdit = false;
+    }
+
+    return canUserEdit;
+  };
+
+  const DisplayDate = (date) => {
+    const convertedData = moment.utc(date);
+    return moment(convertedData)
+      .format("LLL")
+      .toString();
+  };
+
+  const handleAlertDialog = (item) => {
+    setOpen(true)
+    setDeleteItem(item)
+  }
+
+  const findIndexOfWantedItem = (item) => {
+    const index = items.findIndex((item) => item.id === deleteItem.id)
+    return index;
+  }
+
+  const deleteHandler = () => {
+    deleteRequest(
+      DeleteFilter("actions", deleteItem.id),
+      (data) => {
+        if (data.errors)
+          HandleSnack("Ocorreu algum erro", true, "warning", "#FA8072");
+        else {
+          HandleSnack(
+            "O achievement foi deletada com sucesso",
+            true,
+            "success",
+            "#228B22"
+          );
+          handleChangeStateItem(findIndexOfWantedItem(deleteItem), "deleted")
+        }
+        setcurrPage(0)
+      },
+      (error) => {
+        HandleSnack("Ocorreu algum erro", true, "warning", "#FA8072");
+      }
+    )
+  }
+
+  const handleChangeStateItem = (index, state) => {
+    const currItems = [...items]
+    currItems.splice(index, 1)
+    setItems(currItems)
+  }
+
+  const buildUrl = (description, name) => {
+    if (description && name)
+      return Url("/actions", `"description" : "${description}", "name" : "${name}"`, currPage, "DESC")
+    if (description)
+      return Url("/actions", `"description" : "${description}"`, currPage, "DESC")
+    if (name)
+      return Url("/actions", `"name" : "${name}"`, currPage, "DESC")
+    else
+      return Url("/actions", "", currPage, "DESC")
+  }
+
+  useEffect(() => {
+    if (currPage === 0)
+      setLoaded(false)
+    else
+      setIsLoadingMoreItems(true)
+    getRequest(
+      buildUrl(descricao, name),
+      (data, header) => {
+        const arrData = [...data]
+        if (arrData.length === 0) {
+          HandleSnack('Não há mais dados para serem carregados', true, 'warning', '#FFC125')
+        } else {
+          const arrItems = [...items]
+          if (currPage === 0) {
+            setItems(arrData.concat(ADD_ONE_LENGHT))
+          }
+          else {
+            arrItems.pop(); //Deleting the last position, that was used to display the button of load more items 
+            const arrResult = arrItems.concat(arrData)
+            setItems(arrResult.concat(ADD_ONE_LENGHT))
+          }
+        }
+        setLoaded(true)
+        setIsLoadingMoreItems(false)
+      },
+      (error) => {
+        HandleSnack('Erro ao carregar os dados', true, 'warning', '#FA8072')
+        setIsLoadingMoreItems(false)
+      }
+    )
+  }, [currPage, descricao, name, stateOpt])
+
+  useEffect(() => {
+    setDescricao("")
+    setName("")
+    setValueNameField("")
+    setValueDescricaoField("")
+    setStateOpt(1)
+  }, [showFilter])
+
+  if (error) {
+    return <div>Error</div>;
+  } else if (!loaded) {
+    return <LoadingSpinner text="Carregando..." />;
+  } else {
+    if (CheckUserPermission()) {
+      if (WINDOW_WIDTH <= 950) {
+        return (
+          <>
+            <AlertDialog
+              open={open}
+              OnDelete={deleteHandler}
+              deleteItem={deleteItem}
+              HandleClose={() => {
+                setOpen(false)
+              }}
+            />
+            <SnackBar
+              severity={snackInfo.icon}
+              text={snackInfo.message}
+              snackbarOpen={snackInfo.open}
+              color={snackInfo.color}
+              handleClose={() =>
+                setSnackInfo({
+                  message: "",
+                  icon: "",
+                  open: false,
+                  color: "",
+                })
+              }
+            />
+            <MobilePageHeader
+              title="Ações"
+              actions={[
+                {
+                  name: "Atualizar",
+                  isLoading: false,
+                  func: () => {
+                    setcurrPage(0);
+                  },
+                  icon: <UpdateRoundedIcon />,
+                },
+                {
+                  name: "Filtrar",
+                  isLoading: false,
+                  func: () => {
+                    setShowFilter(!showFilter);
+                  },
+                  icon: <FilterListRoundedIcon />,
+                },
+                {
+                  name: "Novo",
+                  isLoading: false,
+                  func: () => {
+                    history.push("/admin/CreateAction")
+                  },
+                  icon: <AddRoundedIcon />,
+                },
+              ]}
+            >
+              {showFilter ? (
+                <Grid
+                  container
+                  direction="row"
+                  justify="space-between"
+                  alignItems="center"
+                  alignContent="flex-end"
+                  spacing={3}
+                  xs={12}
+                >
+                  <Grid item>
+                    <TextField
+                      label="Descrição"
+                      value={valueDescricaoField}
+                      onChange={(e) => { setValueDescricaoField(e.target.value) }}
+                      onBlur={(e) => { setDescricao(e.target.value) }}
+                      helperText="Por favor, ao digitar o Descrição que você quer filtar, retire o foco do campo de texto"
+                    />
+                  </Grid>
+                  <Grid item>
+                    <TextField
+                      label="Nome"
+                      value={valueNameField}
+                      onChange={(e) => { setValueNameField(e.target.value) }}
+                      onBlur={(e) => { setName(e.target.value) }}
+                      helperText="Por favor, ao digitar o nome que você quer filtar, retire o foco do campo de texto"
+                    />
+                  </Grid>
+                </Grid>
+              ) : null}
+            </MobilePageHeader>
+            <div style={{ height: '2em' }}></div>
+
+            {items.map((row, index) =>
+              index === items.length - 1 ? (
+                <StyledDivButton>
+                  <Button
+                    key={index}
+                    color="primary"
+                    variant="text"
+                    // disabled={isLoadingMoreItems}
+                    startIcon={<AddRoundedIcon />}
+                    disabled={isLoadingMoreItems}
+                    onClick={() => {
+                      setcurrPage(currPage + 1)
+                    }}
+                  >
+                    {isLoadingMoreItems ? (
+                      <CircularProgress size={24} />
+                    ) : (
+                        "Carregar mais itens"
+                      )}
+                  </Button>
+                </StyledDivButton>
+              ) : (
+                  <>
+                    <MobileList
+                      key={index}
+                      title={row.name}
+                      subtitle={row.id}
+                      backColor={"#00bcd4"}
+                      avatar={
+                        <GrAction size={20} color="white" />
+                      }
+                      href={`/admin/action/${row.id}`}
+                      reset={() => { }}
+                      data={[
+                        {
+                          title: "Criado em",
+                          subtitle: DisplayDate(row.created_at)
+                        },
+                        {
+                          title: "Atualizado em",
+                          subtitle: DisplayDate(row.updated_at)
+                        },
+                        {
+                          title: "Descrição",
+                          subtitle: row.description
+                        },
+                        row.requirements.length >= 1 ?
+                          {
+                            title: "Requisitos que dependem dessa ação",
+                            subtitle: <ul>
+                              {
+                                row.requirements.map((req) => {
+                                  return (
+                                    <li key={req.created_at}>
+                                      <Link to={`/admin/requirement/${req.id}`}>
+                                        <a style={{ color: "#00bcd4", textDecoration: "none" }}>
+                                          {req.description}
+                                        </a>
+                                      </Link>
+                                    </li>
+                                  )
+                                })
+                              }
+                            </ul>
+                          } : {},
+                        {
+                          title: "Ações",
+                          subtitle: <Button
+                            variant="contained"
+                            color="secondary"
+                            startIcon={<DeleteRoundedIcon />}
+                            onClick={() => handleAlertDialog(row)}
+                          >
+                            Deletar
+                          </Button>
+                        },
+                      ]}
+                    />
+                    <div style={{ height: "0.5em" }} />
+                  </>
+                )
+            )}
+          </>
+        )
+      } else {
+        return (
+          <>
+            <SnackBar
+              severity={snackInfo.icon}
+              text={snackInfo.message}
+              snackbarOpen={snackInfo.open}
+              color={snackInfo.color}
+              handleClose={() =>
+                setSnackInfo({
+                  message: "",
+                  icon: "",
+                  open: false,
+                  color: "",
+                })
+              }
+            />
+            <PageHeader
+              title="Ações "
+              actions={[
+                {
+                  name: "Atualizar",
+                  isLoading: false,
+                  func: () => {
+                    setcurrPage(0);
+                  },
+                  icon: <UpdateRoundedIcon />,
+                },
+                {
+                  name: "Filtrar",
+                  isLoading: false,
+                  func: () => {
+                    setShowFilter(!showFilter);
+                  },
+                  icon: <FilterListRoundedIcon />,
+                },
+                {
+                  name: "Novo",
+                  isLoading: false,
+                  func: () => {
+                    history.push("/admin/CreateAction")
+                  },
+                  icon: <AddRoundedIcon />,
+                },
+              ]}
+            >
+              {showFilter ? (
+                <Grid
+                  container
+                  direction="row"
+                  justify="space-between"
+                  alignItems="center"
+                  alignContent="flex-end"
+                  spacing={3}
+                  xs={12}
+                >
+                  <Grid item>
+                    <TextField
+                      label="Descrição"
+                      value={valueDescricaoField}
+                      onChange={(e) => { setValueDescricaoField(e.target.value) }}
+                      onBlur={(e) => { setDescricao(e.target.value) }}
+                      helperText="Por favor, ao digitar o nome que você quer filtar, retire o foco do campo de texto"
+                    />
+                  </Grid>
+                  <Grid item>
+                    <TextField
+                      label="Nome"
+                      value={valueNameField}
+                      onChange={(e) => { setValueNameField(e.target.value) }}
+                      onBlur={(e) => { setName(e.target.value) }}
+                      helperText="Por favor, ao digitar o nome que você quer filtar, retire o foco do campo de texto"
+                    />
+                  </Grid>
+                </Grid>
+              ) : null}
+            </PageHeader>
+
+            <div style={{ height: "2em" }}></div>
+
+            <TableData top={TOP_LABELS}>
+              <TableBody>
+                {items.map((row, index) =>
+                  index === items.length - 1 ? (
+                    <StyledTableRow key={index} style={{ padding: "1em" }}>
+                      {/* Button to load more data */}
+                      <StyledTableCell>
+                        <Button
+                          color="primary"
+                          variant="text"
+                          // disabled={isLoadingMoreItems}
+                          startIcon={<AddRoundedIcon />}
+                          disabled={isLoadingMoreItems}
+                          onClick={() => {
+                            setcurrPage(currPage + 1);
+                          }}
+                        >
+                          {isLoadingMoreItems ? (
+                            <CircularProgress size={24} />
+                          ) : (
+                              "Carregar mais itens"
+                            )}
+                        </Button>
+                      </StyledTableCell>
+                    </StyledTableRow>
+                  ) : (
+                      <StyledTableRow key={index}>
+                        <StyledTableCell component="th" scope="row">
+                          {row.id}
+                        </StyledTableCell>
+                        <StyledTableCell align="right">{row.name}</StyledTableCell>
+                        <StyledTableCell align="right">{row.description}</StyledTableCell>
+                        <StyledTableCell align="right">
+                          {DisplayDate(row.created_at)}
+                        </StyledTableCell>
+                        <StyledTableCell align="right">
+                          {DisplayDate(row.updated_at)}
+                        </StyledTableCell>
+                        <StyledTableCell align="right">
+                          <Link to={`/admin/action/${row.id}`}>
+                            <Button
+                              style={{ width: "100%", marginBottom: "0.5em" }}
+                              variant="contained"
+                              color="primary"
+                              startIcon={<VisibilityIcon />}
+                            >
+                              Visualizar
+                            </Button>
+                          </Link>
+
+                          <Button
+                            style={{ width: "100%" }}
+                            variant="contained"
+                            color="secondary"
+                            startIcon={<DeleteRoundedIcon />}
+                            onClick={() => handleAlertDialog(row)}
+                          >
+                            Deletar
+                          </Button>
+                        </StyledTableCell>
+                      </StyledTableRow>
+                    )
+                )}
+              </TableBody>
+            </TableData>
+            <AlertDialog
+              open={open}
+              OnDelete={deleteHandler}
+              deleteItem={deleteItem}
+              HandleClose={() => {
+                setOpen(false)
+              }}
+            />
+          </>
+        );
+      }
+    } else return <Unauthorized />;
+  }
+};
+export default GameficationActions;
+
+const StyledDivButton = styled(Paper)`
+    width : 100%;
+    display : flex; 
+    justify-content : center; 
+    align-items : center; 
+`
+
+