└── frontend ├── src ├── index.css ├── images │ ├── Spur.png │ ├── sdlc.png │ └── logo1.png ├── components │ ├── Post │ │ ├── Scroll.css │ │ └── CreatePost.js │ ├── Messenger │ │ ├── Scroll.css │ │ ├── Conversations.js │ │ ├── Messages.js │ │ ├── ChatAside.js │ │ └── MessengerDetails.js │ ├── common │ │ ├── Scroll.css │ │ ├── TopDesign.js │ │ └── Footer.js │ ├── Sweetalert │ │ └── sweetAlert.js │ ├── Landingpage │ │ ├── StaticHeading.js │ │ ├── Bubble.css │ │ └── StaticRowOne.js │ ├── Admin │ │ ├── Dashboard │ │ │ ├── PieChartUser.js │ │ │ ├── BarChart.js │ │ │ ├── LineChart.js │ │ │ ├── Dashboard.js │ │ │ └── DashboardDesign.js │ │ ├── AdminRegister.js │ │ ├── AdminLogin.js │ │ ├── Report │ │ │ └── Report.js │ │ ├── AdminAside.js │ │ ├── UserManagement │ │ │ └── UpdateUser.js │ │ └── InterviewerManagement │ │ │ └── UpdateInterviewer.js │ ├── Interviewer │ │ ├── Dashboard │ │ │ ├── BarChart.js │ │ │ ├── LineChart.js │ │ │ ├── Dashboard.js │ │ │ └── DashboardDesign.js │ │ ├── Wallet │ │ │ ├── shimmer.css │ │ │ ├── WalletDesign.js │ │ │ └── Wallet.js │ │ ├── Requests │ │ │ └── AllRequests.js │ │ ├── Upcomming │ │ │ ├── InterAllUpcomming.js │ │ │ └── InterUpcommings.js │ │ ├── InterStatistics.js │ │ └── Report │ │ │ └── Report.js │ ├── About │ │ ├── UserDetails.js │ │ ├── Statistics.js │ │ ├── InterStatistics.js │ │ └── About.js │ ├── User │ │ ├── Upcomming │ │ │ ├── AllUpcomming.js │ │ │ └── Upcomming.js │ │ ├── Feedback │ │ │ └── ViewFeedback.js │ │ ├── Interviews │ │ │ ├── AllCompletedInterviews.js │ │ │ └── CompletedInterviews.js │ │ ├── Notification │ │ │ ├── AllNotifications.js │ │ │ └── Notification.js │ │ ├── Statistics.js │ │ └── Aside.js │ └── Profile │ │ └── PasswordChange.js ├── axiosinstance.js ├── Layouts │ ├── userLayout.js │ └── adminLayout.js ├── Redux │ ├── Features │ │ ├── userData.js │ │ ├── postData.js │ │ ├── adminData.js │ │ └── notificationData.js │ └── store.js ├── pages │ ├── Common │ │ ├── ProfilePage.js │ │ ├── LoginPage.js │ │ ├── JoinNowPage.js │ │ ├── Home.js │ │ ├── AboutPage.js │ │ ├── MessengerPage.js │ │ ├── PostsPage.js │ │ └── UserHome.js │ ├── Admin │ │ ├── AdminLoginPage.js │ │ ├── AdminRegisterPage.js │ │ ├── ReportPage.js │ │ ├── ManageUserPage.js │ │ ├── UpdateUserPage.js │ │ ├── MangeInterviewPage.js │ │ ├── ManageInterviewerPage.js │ │ ├── AdminDashboardPage.js │ │ └── UpdateInterviewerPage.js │ ├── Interviewer │ │ ├── DashboardPage.js │ │ ├── InterviewerReportPage.js │ │ ├── InterviewRequestPage.js │ │ ├── InterviewManagementPage.js │ │ ├── WalletPage.js │ │ └── InterviewerUpcommingPage.js │ └── User │ │ ├── PaymentPage.js │ │ ├── FeedbackPage.js │ │ ├── UserUpcommingPage.js │ │ ├── userNotification.js │ │ └── CompletedInterviewsPage.js ├── App.css ├── index.js ├── Theme.js └── App.js ├── public ├── robots.txt ├── favicon.ico ├── manifest.json └── index.html ├── .gitignore ├── package.json └── README.md /frontend/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding:0; 4 | } 5 | -------------------------------------------------------------------------------- /frontend/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /frontend/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sudheeshmpgt/spur-adminUI/HEAD/frontend/public/favicon.ico -------------------------------------------------------------------------------- /frontend/src/images/Spur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sudheeshmpgt/spur-adminUI/HEAD/frontend/src/images/Spur.png -------------------------------------------------------------------------------- /frontend/src/images/sdlc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sudheeshmpgt/spur-adminUI/HEAD/frontend/src/images/sdlc.png -------------------------------------------------------------------------------- /frontend/src/images/logo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sudheeshmpgt/spur-adminUI/HEAD/frontend/src/images/logo1.png -------------------------------------------------------------------------------- /frontend/src/components/Post/Scroll.css: -------------------------------------------------------------------------------- 1 | .scrollbar-hidden::-webkit-scrollbar { 2 | display: none; 3 | } 4 | .scrollbar-hidden { 5 | -ms-overflow-style: none; 6 | scrollbar-width: none; 7 | } -------------------------------------------------------------------------------- /frontend/src/components/Messenger/Scroll.css: -------------------------------------------------------------------------------- 1 | .scrollbar-hidden::-webkit-scrollbar { 2 | display: none; 3 | } 4 | .scrollbar-hidden { 5 | -ms-overflow-style: none; 6 | scrollbar-width: none; 7 | } -------------------------------------------------------------------------------- /frontend/src/components/common/Scroll.css: -------------------------------------------------------------------------------- 1 | .scrollbar-hidden::-webkit-scrollbar { 2 | display: none; 3 | } 4 | .scrollbar-hidden { 5 | -ms-overflow-style: none; 6 | scrollbar-width: none; 7 | } -------------------------------------------------------------------------------- /frontend/src/axiosinstance.js: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | 3 | const instance = axios.create({ 4 | baseURL:'https://spur-backend.herokuapp.com/' 5 | }); 6 | 7 | // instance.defaults.headers.common['Authorisation'] = 'Auth from instance' 8 | 9 | export default instance; -------------------------------------------------------------------------------- /frontend/src/components/common/TopDesign.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | function TopDesign() { 4 | return ( 5 |
6 |
7 |
8 | ) 9 | } 10 | 11 | export default TopDesign -------------------------------------------------------------------------------- /frontend/src/Layouts/userLayout.js: -------------------------------------------------------------------------------- 1 | import { Grid } from '@mui/material' 2 | import Header from '../components/common/Header' 3 | import TopDesign from '../components/common/TopDesign' 4 | 5 | function layout({children}) { 6 | return ( 7 | 8 |
9 | 10 | {children} 11 | 12 | ) 13 | } 14 | 15 | export default layout -------------------------------------------------------------------------------- /frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /frontend/src/Layouts/adminLayout.js: -------------------------------------------------------------------------------- 1 | import { Grid } from '@mui/material' 2 | import AdminHeader from '../components/Admin/AdminHeader' 3 | import TopDesign from '../components/common/TopDesign' 4 | 5 | function adminLayout({children}) { 6 | return ( 7 | 8 | 9 | 10 | {children} 11 | 12 | ) 13 | } 14 | 15 | export default adminLayout -------------------------------------------------------------------------------- /frontend/src/Redux/Features/userData.js: -------------------------------------------------------------------------------- 1 | import {createSlice} from '@reduxjs/toolkit'; 2 | 3 | export const userDataSlice = createSlice({ 4 | name: 'userData', 5 | initialState: {value:{}}, 6 | reducers: { 7 | login : (state, action) => { 8 | state.value = action.payload; 9 | } 10 | } 11 | }); 12 | 13 | export const {login} = userDataSlice.actions; 14 | export default userDataSlice.reducer; -------------------------------------------------------------------------------- /frontend/src/components/Sweetalert/sweetAlert.js: -------------------------------------------------------------------------------- 1 | import Swal from 'sweetalert2'; 2 | 3 | const Toast = Swal.mixin({ 4 | toast: true, 5 | position: 'top-start', 6 | showConfirmButton: false, 7 | timer: 3000, 8 | didOpen: (toast) => { 9 | toast.addEventListener('mouseenter', Swal.stopTimer) 10 | toast.addEventListener('mouseleave', Swal.resumeTimer) 11 | } 12 | }) 13 | 14 | export default Toast; -------------------------------------------------------------------------------- /frontend/src/Redux/Features/postData.js: -------------------------------------------------------------------------------- 1 | import {createSlice} from '@reduxjs/toolkit'; 2 | 3 | export const postDataSlice = createSlice({ 4 | name: 'postData', 5 | initialState: {value:[]}, 6 | reducers: { 7 | createPost : (state, action) => { 8 | state.value = action.payload; 9 | } 10 | } 11 | }); 12 | 13 | export const {createPost} = postDataSlice.actions; 14 | export default postDataSlice.reducer; -------------------------------------------------------------------------------- /frontend/src/pages/Common/ProfilePage.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Grid } from "@mui/material"; 3 | import UserLayout from "../../Layouts/userLayout"; 4 | import ProfileDesign from "../../components/Profile/ProfileDesign"; 5 | 6 | function Profile() { 7 | return ( 8 | 9 | 10 | 11 | 12 | 13 | ); 14 | } 15 | 16 | export default Profile; 17 | -------------------------------------------------------------------------------- /frontend/src/Redux/Features/adminData.js: -------------------------------------------------------------------------------- 1 | import {createSlice} from '@reduxjs/toolkit'; 2 | 3 | export const adminDataSlice = createSlice({ 4 | name: 'adminData', 5 | initialState: {value:{}}, 6 | reducers: { 7 | adminLogin : (state, action) => { 8 | state.value = action.payload; 9 | } 10 | } 11 | }); 12 | 13 | export const {adminLogin} = adminDataSlice.actions; 14 | export default adminDataSlice.reducer; -------------------------------------------------------------------------------- /frontend/src/Redux/Features/notificationData.js: -------------------------------------------------------------------------------- 1 | import {createSlice} from '@reduxjs/toolkit'; 2 | 3 | export const notificationDataSlice = createSlice({ 4 | name: 'notificationData', 5 | initialState: {value:[]}, 6 | reducers: { 7 | notification : (state, action) => { 8 | state.value = action.payload; 9 | } 10 | } 11 | }); 12 | 13 | export const { notification} = notificationDataSlice.actions; 14 | export default notificationDataSlice.reducer; -------------------------------------------------------------------------------- /frontend/src/pages/Common/LoginPage.js: -------------------------------------------------------------------------------- 1 | import { Box, Grid } from "@mui/material"; 2 | import React from "react"; 3 | import UserLayout from "../../Layouts/userLayout"; 4 | import Login from "../../components/Login/Login"; 5 | 6 | function LoginPage() { 7 | return ( 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ); 16 | } 17 | 18 | export default LoginPage; 19 | -------------------------------------------------------------------------------- /frontend/src/pages/Admin/AdminLoginPage.js: -------------------------------------------------------------------------------- 1 | import { Box, Grid } from "@mui/material"; 2 | import React from "react"; 3 | import AdminLogin from "../../components/Admin/AdminLogin"; 4 | import AdminLayout from "../../Layouts/adminLayout" 5 | 6 | function AdminLoginPage() { 7 | return ( 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ) 16 | } 17 | 18 | export default AdminLoginPage -------------------------------------------------------------------------------- /frontend/src/pages/Common/JoinNowPage.js: -------------------------------------------------------------------------------- 1 | import { Box, Grid } from "@mui/material"; 2 | import React from "react"; 3 | import JoinNow from "../../components/UserRegister/JoinNow"; 4 | import UserLayout from "../../Layouts/userLayout"; 5 | 6 | function JoinNowPage() { 7 | return ( 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ); 16 | } 17 | 18 | export default JoinNowPage; 19 | -------------------------------------------------------------------------------- /frontend/src/pages/Admin/AdminRegisterPage.js: -------------------------------------------------------------------------------- 1 | import { Box, Grid } from "@mui/material"; 2 | import React from "react"; 3 | import AdminRegister from "../../components/Admin/AdminRegister"; 4 | import AdminLayout from "../../Layouts/adminLayout" 5 | 6 | function AdminRegisterPage() { 7 | return ( 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ) 16 | } 17 | 18 | export default AdminRegisterPage 19 | -------------------------------------------------------------------------------- /frontend/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /frontend/src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | padding:0; 3 | margin:0; 4 | } 5 | .Rectangle { 6 | width:100%; 7 | height:360px; 8 | position:absolute; 9 | background-color: #80c7ff; 10 | z-index: -1; 11 | } 12 | .Ellipse{ 13 | width:100%; 14 | margin-top: 230px; 15 | height:250px; 16 | position:absolute; 17 | border-radius: 45% 45% 45% 45%; 18 | background-color: #80c7ff; 19 | z-index: -1; 20 | } 21 | .EllipseFooter{ 22 | width:100%; 23 | height:250px; 24 | margin-bottom: 10; 25 | position:absolute; 26 | border-radius: 45% 45% 45% 45%; 27 | background-color: #80c7ff; 28 | z-index: -1; 29 | } 30 | 31 | -------------------------------------------------------------------------------- /frontend/src/components/Landingpage/StaticHeading.js: -------------------------------------------------------------------------------- 1 | import { Typography } from '@mui/material' 2 | import { Box } from '@mui/system' 3 | import React from 'react' 4 | 5 | function StaticHeading() { 6 | return ( 7 | 8 | 17 | Unhappy with your performance at interviews? 18 | 19 | 20 | ) 21 | } 22 | 23 | export default StaticHeading -------------------------------------------------------------------------------- /frontend/src/Redux/store.js: -------------------------------------------------------------------------------- 1 | import {configureStore} from '@reduxjs/toolkit' 2 | import userReducer from '../Redux/Features/userData' 3 | import postReducer from '../Redux/Features/postData' 4 | import adminReducer from '../Redux/Features/adminData' 5 | import notificationReducer from '../Redux/Features/notificationData' 6 | import storage from 'redux-persist/lib/storage' 7 | import {persistReducer} from 'redux-persist' 8 | import {combineReducers} from 'redux' 9 | 10 | const persistConfig = { 11 | key: 'root', 12 | storage, 13 | } 14 | 15 | const reducer = combineReducers({ 16 | userData: userReducer, 17 | postData: postReducer, 18 | notificationData : notificationReducer, 19 | adminData: adminReducer 20 | }) 21 | 22 | const persistedReducer = persistReducer(persistConfig, reducer) 23 | 24 | const store = configureStore({ 25 | reducer: persistedReducer, 26 | }) 27 | 28 | export default store; -------------------------------------------------------------------------------- /frontend/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import { BrowserRouter } from 'react-router-dom' 4 | import './index.css'; 5 | import App from './App'; 6 | import { Theme } from './Theme' 7 | import { ThemeProvider } from '@mui/material/styles' 8 | import { Provider } from 'react-redux' 9 | import store from '../src/Redux/store' 10 | import { persistStore } from 'redux-persist' 11 | import { PersistGate } from 'redux-persist/integration/react' 12 | 13 | const persistor = persistStore(store); 14 | 15 | const root = ReactDOM.createRoot(document.getElementById('root')); 16 | root.render( 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | ); 27 | -------------------------------------------------------------------------------- /frontend/src/components/Admin/Dashboard/PieChartUser.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Pie } from 'react-chartjs-2' 3 | import { Chart, registerables } from 'chart.js' 4 | Chart.register(...registerables) 5 | 6 | function PieChartUser({ datas}) { 7 | const value = ["Interviewer", "Interviewee"] 8 | return ( 9 |
10 | 23 |
24 | ) 25 | } 26 | 27 | export default PieChartUser -------------------------------------------------------------------------------- /frontend/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 15 | Spur 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | -------------------------------------------------------------------------------- /frontend/src/pages/Common/Home.js: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from "react"; 2 | import { Box, Grid } from "@mui/material"; 3 | import UserLayout from "../../Layouts/userLayout"; 4 | import StaticContents from "../../components/Landingpage/StaticHeading"; 5 | import StaticRowOne from "../../components/Landingpage/StaticRowOne"; 6 | import Footer from "../../components/common/Footer"; 7 | import { useNavigate } from "react-router-dom"; 8 | 9 | function Home() { 10 | const [token, setToken] = useState(""); 11 | 12 | const navigate = useNavigate(); 13 | useEffect(() => { 14 | const token = localStorage.getItem("usertoken"); 15 | setToken(token); 16 | }, [token]); 17 | 18 | if (token) { 19 | navigate("/home"); 20 | } 21 | 22 | return ( 23 | 24 | 25 | 26 | 27 | 28 | 29 |