diff --git a/src/Components/CollectionDescription.js b/src/Components/CollectionDescription.js
index 938139f90102f7dcf5f3e82467cf58c45dc01900..eacf37f7400594f2be78d06b24baecd69a928842 100644
--- a/src/Components/CollectionDescription.js
+++ b/src/Components/CollectionDescription.js
@@ -54,7 +54,7 @@ export default function CollectionDescription(props) {
 						</DownloadButton>
 					</Grid>
 					<Grid item>
-						<FollowCollectionButton user_id={state.currentUser.id}/>
+						<FollowCollectionButton user_id={state.currentUser.id} collection_id={props.collection_id}/>
 					</Grid>
 				</Grid>
 			</Grid>
@@ -73,7 +73,7 @@ const ButtonText=styled.span`
 	font-size: 1.2em;
 `
 const DownloadButton=styled(Button)`
-	padding-left: 10,
-	padding-right: 10,
-	width: 210,
+	padding-left: 10;
+	padding-right: 10;
+	width: 250px;
 `
diff --git a/src/Components/FollowCollectionButton.js b/src/Components/FollowCollectionButton.js
index a172e7728139877fcc6b99b8856441cd68bd1f1d..3956ede486c849017f13697b0f084f18146b3263 100644
--- a/src/Components/FollowCollectionButton.js
+++ b/src/Components/FollowCollectionButton.js
@@ -16,33 +16,70 @@ 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 } from 'react';
+import React, { useState, useEffect } from 'react';
 import Button from '@material-ui/core/Button';
 import CheckIcon from '@material-ui/icons/Check';
 import AddIcon from '@material-ui/icons/Add';
 import styled from 'styled-components';
 import SignUpModal from './SignUpModal.js';
+import axios from 'axios';
+import {apiUrl} from '../env';
 
 export default function FollowCollectionButton(props) {
 	const [icon, setIcon] = useState(<AddIcon fontSize="large"/>);
 	const [button_text, setButtonText] = useState("Seguir Coleção");
 	const [variant, setVariant] = useState("outlined");
 	const [sign_up_open, setSignUpOpen] = useState(false);
+	const [following, setFollowing] = useState(false); //user following collection
 
-	const handleClick = () => {
-		//aqui tem que ter:
-		//se o usuário não está logado, abre a tela de criar conta
-
-		//setSignUpOpen(true);
+	useEffect(() => {
+		axios.get(apiUrl+'/users/'+props.user_id+'/following/Collection')
+		.then(res => {
+			for (const element in res.body)
+				if (element.id == props.collection_id)
+					setFollowing(true);
+		});
+	}, [])
 
-		//se o usuário já segue a coleção,deixa de seguir
+	//handleMouse{Enter, Leave} only do anything when user follows given collection:
+	const handleMouseEnter = () => {
+		if (following) {
+			setVariant("outlined");
+			setButtonText("Deixar de seguir");
+			setIcon(null);
+		}
+	}
+	
+	const handleMouseLeave = () => {
+		if (following) {
+			setVariant("contained");
+			setButtonText("Seguindo");
+			setIcon(<CheckIcon fontSize="large" />);
+		}
+	}
 
-		//setButtonText("Seguir Coleção");
-
-		//se o usuário não segue a coleção, muda o visual por alguns instantes e depois mostra o "deixa de seguir"
-		setVariant("contained");
-		setButtonText("Seguindo");
-		setIcon(<CheckIcon fontSize="large"/>)
+	const handleClick = () => {
+		if (!props.user_id)
+			setSignUpOpen(true);
+		else if (!following) {
+			setVariant("contained");
+			setButtonText("Seguindo");
+			setIcon(<CheckIcon fontSize="large"/>)
+			axios.post(apiUrl+'/Collection/'+props.collection_id+'/follow')
+				.then(res => {
+					if (Number(res.status) == 201)
+						setFollowing(true);
+				});
+		} else {
+			setVariant("outlined");
+			setButtonText("Deixar de seguir");
+			setIcon(<AddIcon fontSize="large"/>);
+			axios.delete(apiUrl+'/Collection/'+props.collection_id+'/follow')
+				.then(res => {
+					if (Number(res.status) == 200)
+						setFollowing(false);
+				});
+		}
 	};
 
 	return (
@@ -52,7 +89,9 @@ export default function FollowCollectionButton(props) {
 				color="primary"
 				startIcon={icon}
 				size="large"
-				onClick={() => handleClick()}
+				onMouseEnter={handleMouseEnter}
+				onMouseLeave={handleMouseLeave}
+				onClick={handleClick}
 			>
 				<ButtonText>{button_text}</ButtonText>
 			</FollowButton>
@@ -71,7 +110,7 @@ const ButtonText=styled.span`
 	font-size: 1.2em;
 `
 const FollowButton=styled(Button)`
-	padding-left: 10,
-	padding-right: 10,
-	width: 210,
+	padding-left: 10;
+	padding-right: 10;
+	width: 250px;
 `
diff --git a/src/Pages/CollectionPage.js b/src/Pages/CollectionPage.js
index 834d16e6b69aa822720f6fcbe3e57c3b5becc84a..6c8074ead92a2acbd63813bb0a8ac51a5c6790e3 100644
--- a/src/Pages/CollectionPage.js
+++ b/src/Pages/CollectionPage.js
@@ -39,7 +39,7 @@ export default function CollectionPage() {
 			<VerticalRuler width={1} height={300} color="rgb(238, 238, 238)"/>
 
 			<Grid item xs={10} md={6}>
-				<CollectionDescription title="Linguagem de Programacao"/>
+				<CollectionDescription title="Linguagem de Programacao" collection_id="9868"/>
 			</Grid> 
 
 			<Grid container item direction="row" justify="center" alignItems="center" style={{backgroundColor: '#f4f4f4'}}>