From 293220340ba1f4624f09d226086a9378a8ae05a1 Mon Sep 17 00:00:00 2001 From: rabeen Date: Sat, 27 May 2023 21:18:38 +0530 Subject: [PATCH 1/2] . --- db.json | 8 ++ src/api/auth.js | 4 + src/api/profile.js | 10 +++ src/components/Button.js | 0 src/views/auth/Login/Form.js | 30 ++++--- src/views/employees/Profile.js | 160 +++++++++++++++------------------ 6 files changed, 111 insertions(+), 101 deletions(-) create mode 100644 src/api/profile.js create mode 100644 src/components/Button.js diff --git a/db.json b/db.json index 7f011ab..fa7a768 100644 --- a/db.json +++ b/db.json @@ -1,4 +1,12 @@ { + "user": { + "id": 1, + "name": "Anup", + "email": "anup.singh@gmail.com", + "password": "123123123", + "profilePhoto": "", + "phonme": "98181311488" + }, "employees": [ { "_id": 1, diff --git a/src/api/auth.js b/src/api/auth.js index 4b04e8b..23d58c9 100644 --- a/src/api/auth.js +++ b/src/api/auth.js @@ -2,6 +2,10 @@ import axios from "./index"; class AuthApi { + static login = (params) => { + return axios.get(`/user/`, params) + } + static signin = (data) => { return axios.post(`${base}/auth/signin`,data) } diff --git a/src/api/profile.js b/src/api/profile.js new file mode 100644 index 0000000..238aca9 --- /dev/null +++ b/src/api/profile.js @@ -0,0 +1,10 @@ +import axios from "./index"; + +class ProfileApi { + + static edit = (id, body) => { + return axios.put(`/user/${id}`, body) + } +} + +export default ProfileApi; diff --git a/src/components/Button.js b/src/components/Button.js new file mode 100644 index 0000000..e69de29 diff --git a/src/views/auth/Login/Form.js b/src/views/auth/Login/Form.js index dfe393a..9beb178 100644 --- a/src/views/auth/Login/Form.js +++ b/src/views/auth/Login/Form.js @@ -4,7 +4,7 @@ import AuthApi from "../../../api/auth"; import Swal from "sweetalert2"; import { useAuth } from "../../../context/AuthProvider"; import { useNavigate } from "react-router-dom"; -import { ROOT_URL } from "../../../config/url"; +import { PROFILE_URL, ROOT_URL } from "../../../config/url"; const LoginForm = () => { const { @@ -18,16 +18,18 @@ const LoginForm = () => { useEffect(() => { if (user) { console.log("user", user); - navigate(ROOT_URL); + navigate(PROFILE_URL); } }, [user]); const onSubmit = (data) => { - setUser(data); - localStorage.setItem("user", JSON.stringify(data)); + // setUser(data); + localStorage.setItem("user =---->", JSON.stringify(data)); - AuthApi.signin(data).then((result) => { - console.log("signin", result); + // call an API to login + // when api gives success response, navigate to root url + AuthApi.login(data).then((result) => { + console.log("signin -> ", result); if (result.status === 200) { Swal.fire({ timer: 1500, @@ -36,12 +38,12 @@ const LoginForm = () => { Swal.showLoading(); }, willClose: () => { - localStorage.setItem( - "access_token", - result.data.tokens.access_token - ); - localStorage.setItem("user", JSON.stringify(data)); - setUser(data); + // localStorage.setItem( + // "access_token", + // result.data.tokens.access_token + // ); + localStorage.setItem("user", JSON.stringify(result.data)); + setUser(result.data); Swal.fire({ icon: "success", @@ -73,14 +75,14 @@ const LoginForm = () => { return (
-
+ {/*
{errors.name && This field is required} -
+
*/}
{ + const { user, setUser } = useAuth(); + console.log("user", user) + const { + register, + handleSubmit, + formState: { errors } + } = useForm({...user}); + + const onSubmit = (data) => { + console.log('data', data); + ProfileApi.edit(user.id, data).then((result) => { + if (result.status === 200) { + localStorage.setItem("profile edit", JSON.stringify(result.data)); + setUser(result.data); + + Swal.fire({ + icon: "success", + title: "Added!", + text: `${data.firstName} ${data.lastName}'s data has been Added.`, + showConfirmButton: false, + timer: 1500, + }); + } else { + Swal.fire({ + icon: "failure", + title: "Failed!", + text: `${data.name} data has not been updated.`, + showConfirmButton: false, + timer: 1500, + }); + } + }); + }; + return ( <>
+
- Amelly - amelly12@bbb.com + {user.name} + {user.email}
@@ -25,37 +65,30 @@ export const Profile = () => {

Profile

-
- - -
-
- - -
+ className="form-contol" + errors={errors} + {...register("name", { required: true })} + >
- - + className="form-contol" + errors={{}} + {...register("email", { required: true })} + >
-
+ {/*
{ placeholder="enter address" value="" /> -
-
- - -
+
*/}
- - + className="form-contol" + errors={{}} + {...register("phone", { required: true })} + >
+
-
- - -
-
- - -
+
-
-
-
-
-

Experience

-
-
- - -
-
-
- - -
-
-
+
); From edfec0d08c6dd6b316b9cdcc6f2112439b7514f5 Mon Sep 17 00:00:00 2001 From: rupeshkr <1hk19cs122@hkbk.edu.in> Date: Mon, 29 May 2023 23:30:58 +0530 Subject: [PATCH 2/2] sign up page added --- db.json | 399 ++++++++++++++++++++++------ src/api/auth.js | 30 ++- src/config/url.js | 25 +- src/index.js | 17 +- src/views/auth/Blog/Blog.js | 23 ++ src/views/auth/Blog/BlogForm.js | 7 + src/views/auth/Login/Form.js | 30 ++- src/views/auth/SignUp/SignUp.js | 23 ++ src/views/auth/SignUp/SignUpForm.js | 149 +++++++++++ src/views/feed/feed.scss | 9 + src/views/feed/index.js | 395 ++++++++++++++++----------- 11 files changed, 830 insertions(+), 277 deletions(-) create mode 100644 src/views/auth/Blog/Blog.js create mode 100644 src/views/auth/Blog/BlogForm.js create mode 100644 src/views/auth/SignUp/SignUp.js create mode 100644 src/views/auth/SignUp/SignUpForm.js diff --git a/db.json b/db.json index fa7a768..21955e3 100644 --- a/db.json +++ b/db.json @@ -1,11 +1,13 @@ { "user": { - "id": 1, - "name": "Anup", - "email": "anup.singh@gmail.com", - "password": "123123123", - "profilePhoto": "", - "phonme": "98181311488" + "name": "Rupesh", + "email": "rupesh@gmail.com", + "phone": "98766545678", + "password": "1234556", + "profilePhoto": { + "0": {} + }, + "id": "ff6ae769-edb6-44c1-ab31-37e46d04efe4" }, "employees": [ { @@ -109,148 +111,365 @@ "id": "6HdyVz1" } ], - "states": [ - {"name": "Andhra Pradesh", "id": "Andhra Pradesh"}, - {"name": "Arunachal Pradesh", "id": "Arunachal Pradesh"}, - {"name": "Assam", "id": "Assam"}, - {"name": "Bihar", "id": "Bihar"}, - {"name": "Chhattisgarh", "id": "Chhattisgarh"}, - {"name": "Goa", "id": "Goa"}, - {"name": "Gujarat", "id": "Gujarat"} + { + "name": "Andhra Pradesh", + "id": "Andhra Pradesh" + }, + { + "name": "Arunachal Pradesh", + "id": "Arunachal Pradesh" + }, + { + "name": "Assam", + "id": "Assam" + }, + { + "name": "Bihar", + "id": "Bihar" + }, + { + "name": "Chhattisgarh", + "id": "Chhattisgarh" + }, + { + "name": "Goa", + "id": "Goa" + }, + { + "name": "Gujarat", + "id": "Gujarat" + } ], - "cities": { "Andhra Pradesh": [ - {"name": "Hyderabad", "id": "Hyderabad"}, - {"name": "Visakhapatnam", "id": "Visakhapatnam"} + { + "name": "Hyderabad", + "id": "Hyderabad" + }, + { + "name": "Visakhapatnam", + "id": "Visakhapatnam" + } ], "Bihar": [ - {"name": "Patna", "id": "Patna"}, - {"name": "Gaya", "id": "Gaya"} + { + "name": "Patna", + "id": "Patna" + }, + { + "name": "Gaya", + "id": "Gaya" + } ], "Gujarat": [ - {"name": "Ahmedabad", "id": "Ahmedabad"}, - {"name": "Surat", "id": "Surat"} + { + "name": "Ahmedabad", + "id": "Ahmedabad" + }, + { + "name": "Surat", + "id": "Surat" + } ], "Maharashtra": [ - {"name": "Mumbai", "id": "Mumbai"}, - {"name": "Pune", "id": "Pune"} + { + "name": "Mumbai", + "id": "Mumbai" + }, + { + "name": "Pune", + "id": "Pune" + } ], "Telangana": [ - {"name": "Hyderabad", "id": "Hyderabad"}, - {"name": "Warangal", "id": "Warangal"} + { + "name": "Hyderabad", + "id": "Hyderabad" + }, + { + "name": "Warangal", + "id": "Warangal" + } ], "West Bengal": [ - {"name": "Kolkata", "id": "Kolkata"}, - {"name": "Asansol", "id": "Asansol"} + { + "name": "Kolkata", + "id": "Kolkata" + }, + { + "name": "Asansol", + "id": "Asansol" + } ], "Karnataka": [ - {"name": "Bengaluru", "id": "Bengaluru"}, - {"name": "Mysuru", "id": "Mysuru"} + { + "name": "Bengaluru", + "id": "Bengaluru" + }, + { + "name": "Mysuru", + "id": "Mysuru" + } ], "Arunachal Pradesh": [ - {"name": "Itanagar", "id": "Itanagar"}, - {"name": "Tawang", "id": "Tawang"} + { + "name": "Itanagar", + "id": "Itanagar" + }, + { + "name": "Tawang", + "id": "Tawang" + } ], "Assam": [ - {"name": "Guwahati", "id": "Guwahati"}, - {"name": "Silchar", "id": "Silchar"} + { + "name": "Guwahati", + "id": "Guwahati" + }, + { + "name": "Silchar", + "id": "Silchar" + } ], "Chhattisgarh": [ - {"name": "Raipur", "id": "Raipur"}, - {"name": "Bilaspur", "id": "Bilaspur"} + { + "name": "Raipur", + "id": "Raipur" + }, + { + "name": "Bilaspur", + "id": "Bilaspur" + } ], "Goa": [ - {"name": "Panaji", "id": "Panaji"}, - {"name": "Margao", "id": "Margao"} + { + "name": "Panaji", + "id": "Panaji" + }, + { + "name": "Margao", + "id": "Margao" + } ] }, - "postalCodes": { "Hyderabad": [ - {"name": "500001", "id": "500001"}, - {"name": "500002", "id": "500002"}, - {"name": "500003", "id": "500003"} + { + "name": "500001", + "id": "500001" + }, + { + "name": "500002", + "id": "500002" + }, + { + "name": "500003", + "id": "500003" + } ], "Visakhapatnam": [ - {"name": "530001", "id": "530001"}, - {"name": "530002", "id": "530002"}, - {"name": "530003", "id": "530003"} + { + "name": "530001", + "id": "530001" + }, + { + "name": "530002", + "id": "530002" + }, + { + "name": "530003", + "id": "530003" + } ], "Mumbai": [ - {"name": "400001", "id": "400001"}, - {"name": "400002", "id": "400002"}, - {"name": "400003", "id": "400003"} + { + "name": "400001", + "id": "400001" + }, + { + "name": "400002", + "id": "400002" + }, + { + "name": "400003", + "id": "400003" + } ], "Pune": [ - {"name": "411001", "id": "411001"}, - {"name": "411002", "id": "411002"}, - {"name": "411003", "id": "411003"} + { + "name": "411001", + "id": "411001" + }, + { + "name": "411002", + "id": "411002" + }, + { + "name": "411003", + "id": "411003" + } ], "Ahmedabad": [ - {"name": "380001", "id": "380001"}, - {"name": "380002", "id": "380002"}, - {"name": "380003", "id": "380003"} + { + "name": "380001", + "id": "380001" + }, + { + "name": "380002", + "id": "380002" + }, + { + "name": "380003", + "id": "380003" + } ], "Surat": [ - {"name": "395001", "id": "395001"}, - {"name": "395002", "id": "395002"}, - {"name": "395003", "id": "395003"} + { + "name": "395001", + "id": "395001" + }, + { + "name": "395002", + "id": "395002" + }, + { + "name": "395003", + "id": "395003" + } ], "Patna": [ - {"name": "800001", "id": "800001"}, - {"name": "800002", "id": "800002"}, - {"name": "800003", "id": "800003"} + { + "name": "800001", + "id": "800001" + }, + { + "name": "800002", + "id": "800002" + }, + { + "name": "800003", + "id": "800003" + } ], "Gaya": [ - {"name": "823001", "id": "823001"}, - {"name": "823002", "id": "823002"}, - {"name": "823003", "id": "823003"} + { + "name": "823001", + "id": "823001" + }, + { + "name": "823002", + "id": "823002" + }, + { + "name": "823003", + "id": "823003" + } ], "Panaji": [ - {"name": "403001", "id": "403001"}, - {"name": "403002", "id": "403002"}, - {"name": "403003", "id": "403003"} + { + "name": "403001", + "id": "403001" + }, + { + "name": "403002", + "id": "403002" + }, + { + "name": "403003", + "id": "403003" + } ], "Margao": [ - {"name": "403601", "id": "403601"}, - {"name": "403602", "id": "403602"}, - {"name": "403603", "id": "403603"} + { + "name": "403601", + "id": "403601" + }, + { + "name": "403602", + "id": "403602" + }, + { + "name": "403603", + "id": "403603" + } ], "Guwahati": [ - {"name": "781001", "id": "781001"}, - {"name": "781002", "id": "781002"}, - {"name": "781003", "id": "781003"} + { + "name": "781001", + "id": "781001" + }, + { + "name": "781002", + "id": "781002" + }, + { + "name": "781003", + "id": "781003" + } ], "Silchar": [ - {"name": "788001", "id": "788001"}, - {"name": "788002", "id": "788002"}, - {"name": "788003", "id": "788003"} + { + "name": "788001", + "id": "788001" + }, + { + "name": "788002", + "id": "788002" + }, + { + "name": "788003", + "id": "788003" + } ], "Itanagar": [ - {"name": "791111", "id": "791111"}, - {"name": "791112", "id": "791112"}, - {"name": "791113", "id": "791113"} + { + "name": "791111", + "id": "791111" + }, + { + "name": "791112", + "id": "791112" + }, + { + "name": "791113", + "id": "791113" + } ], "Tawang": [ - {"name": "790104", "id": "790104"}, - {"name": "790105", "id": "790105"}, - {"name": "790106", "id": "790106"} + { + "name": "790104", + "id": "790104" + }, + { + "name": "790105", + "id": "790105" + }, + { + "name": "790106", + "id": "790106" + } ] }, - "addresses": [ { "name": "Andhra Pradesh", "cities": [ { "name": "Hyderabad", - "postalCodes": ["500001", "500002", "500003"] + "postalCodes": [ + "500001", + "500002", + "500003" + ] }, { "name": "Visakhapatnam", - "postalCodes": ["530001", "530002", "530003"] + "postalCodes": [ + "530001", + "530002", + "530003" + ] } ] }, @@ -259,13 +478,21 @@ "cities": [ { "name": "Mumbai", - "postalCodes": ["400001", "400002", "400003"] + "postalCodes": [ + "400001", + "400002", + "400003" + ] }, { "name": "Pune", - "postalCodes": ["411001", "411002", "411003"] + "postalCodes": [ + "411001", + "411002", + "411003" + ] } ] } ] -} +} \ No newline at end of file diff --git a/src/api/auth.js b/src/api/auth.js index 23d58c9..e9903c4 100644 --- a/src/api/auth.js +++ b/src/api/auth.js @@ -1,22 +1,26 @@ import axios from "./index"; class AuthApi { + static login = (params) => { + return axios.get(`/user/`, params); + }; - static login = (params) => { - return axios.get(`/user/`, params) - } + static signin = (data) => { + return axios.post(`${base}/auth/signin`, data); + }; + static signup = (params) => { + return axios.post(`/user/`, params); + }; - static signin = (data) => { - return axios.post(`${base}/auth/signin`,data) - } + static Register = (data) => { + return axios.post(`${base}/register`, data); + }; - static Register = (data) => { - return axios.post(`${base}/register`, data); - }; - - static Logout = (data) => { - return axios.post(`${base}/logout`, data, { headers: { Authorization: `${data.token}` } }); - }; + static Logout = (data) => { + return axios.post(`${base}/logout`, data, { + headers: { Authorization: `${data.token}` }, + }); + }; } let base = "users"; diff --git a/src/config/url.js b/src/config/url.js index 1d2c9ec..c947f5e 100644 --- a/src/config/url.js +++ b/src/config/url.js @@ -1,14 +1,25 @@ -const ROOT_URL = '/'; +const ROOT_URL = "/"; // Employee -const EMPLOYEE_FORM = '/employee/form'; -const EMPLOYEE_LIST_URL = '/employees'; +const EMPLOYEE_FORM = "/employee/form"; +const EMPLOYEE_LIST_URL = "/employees"; // User -const FEED_URL = '/feed'; -const PROFILE_URL = '/profile'; +const FEED_URL = "/feed"; +const PROFILE_URL = "/profile"; // Auth -const LOGIN_URL = '/login'; +const LOGIN_URL = "/login"; +const SIGNUP_URL = "/signup"; +const BLOG_URL = "/blog"; -export {ROOT_URL, EMPLOYEE_FORM, EMPLOYEE_LIST_URL, LOGIN_URL, FEED_URL, PROFILE_URL}; \ No newline at end of file +export { + ROOT_URL, + EMPLOYEE_FORM, + EMPLOYEE_LIST_URL, + LOGIN_URL, + FEED_URL, + PROFILE_URL, + SIGNUP_URL, + BLOG_URL, +}; diff --git a/src/index.js b/src/index.js index 7beb311..bb31504 100644 --- a/src/index.js +++ b/src/index.js @@ -5,13 +5,24 @@ import App from "./App"; import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; import Feed from "./views/feed"; import Login from "./views/auth/Login"; +import SignUp from "./views/auth/SignUp/SignUp"; import Dashboard from "./views/dashboard"; import EmployeeForm from "./views/employees/Form"; import { Profile } from "./views/employees/Profile"; import { AuthProvider } from "./context/AuthProvider"; import { NavigationProvider } from "./context/NavigationProvider"; -import { EMPLOYEE_FORM, EMPLOYEE_LIST_URL, FEED_URL, LOGIN_URL, PROFILE_URL, ROOT_URL } from "./config/url"; -import { QueryClient, QueryClientProvider } from 'react-query'; +import { + EMPLOYEE_FORM, + EMPLOYEE_LIST_URL, + FEED_URL, + LOGIN_URL, + PROFILE_URL, + ROOT_URL, + SIGNUP_URL, + BLOG_URL, +} from "./config/url"; +import { QueryClient, QueryClientProvider } from "react-query"; +import Blog from "./views/auth/Blog/Blog"; const root = ReactDOM.createRoot(document.getElementById("root")); let user = localStorage.getItem("user"); @@ -31,6 +42,8 @@ root.render( } /> } /> } /> + } /> + } /> diff --git a/src/views/auth/Blog/Blog.js b/src/views/auth/Blog/Blog.js new file mode 100644 index 0000000..5891fb9 --- /dev/null +++ b/src/views/auth/Blog/Blog.js @@ -0,0 +1,23 @@ +import React from "react"; +import BlogForm from "./BlogForm"; + +const Blog = () => { + return ( + <> +
+
+
+ +
+
+
+ + ); +}; + +export default Blog; diff --git a/src/views/auth/Blog/BlogForm.js b/src/views/auth/Blog/BlogForm.js new file mode 100644 index 0000000..1bb9910 --- /dev/null +++ b/src/views/auth/Blog/BlogForm.js @@ -0,0 +1,7 @@ +import React from "react"; + +const BlogForm = () => { + return <>; +}; + +export default BlogForm; diff --git a/src/views/auth/Login/Form.js b/src/views/auth/Login/Form.js index 9beb178..38230b2 100644 --- a/src/views/auth/Login/Form.js +++ b/src/views/auth/Login/Form.js @@ -2,9 +2,10 @@ import React, { useEffect } from "react"; import { useForm } from "react-hook-form"; import AuthApi from "../../../api/auth"; import Swal from "sweetalert2"; +import { Link, NavLink } from "react-router-dom"; import { useAuth } from "../../../context/AuthProvider"; import { useNavigate } from "react-router-dom"; -import { PROFILE_URL, ROOT_URL } from "../../../config/url"; +import { PROFILE_URL, ROOT_URL, SIGNUP_URL } from "../../../config/url"; const LoginForm = () => { const { @@ -27,7 +28,7 @@ const LoginForm = () => { localStorage.setItem("user =---->", JSON.stringify(data)); // call an API to login - // when api gives success response, navigate to root url + // when api gives success response, navigate to root url AuthApi.login(data).then((result) => { console.log("signin -> ", result); if (result.status === 200) { @@ -72,6 +73,9 @@ const LoginForm = () => { } }); }; + const handleNavigate = () => { + navigate(SIGNUP_URL); + }; return (
@@ -116,12 +120,22 @@ const LoginForm = () => { Forgot password? - + +
+ + +
+
+
+
+ + ); +}; + +export default SignUpForm; diff --git a/src/views/feed/feed.scss b/src/views/feed/feed.scss index f66410b..7293931 100644 --- a/src/views/feed/feed.scss +++ b/src/views/feed/feed.scss @@ -8,6 +8,15 @@ p { margin: 0; } + + .add-blog h5{ + color: #fff; + font-size: 15px; + font-weight: 200; + border: 1px solid #ccc; + border-radius: 13px; + cursor: pointer; + } .topnav a { float: left; diff --git a/src/views/feed/index.js b/src/views/feed/index.js index 5801276..23478ca 100644 --- a/src/views/feed/index.js +++ b/src/views/feed/index.js @@ -1,187 +1,260 @@ -import React from 'react'; -import Header from '../../components/Navbar'; -import './feed.scss'; +import React from "react"; +import Header from "../../components/Navbar"; +import "./feed.scss"; +import { useNavigate } from "react-router-dom"; +import { BLOG_URL } from "../../config/url"; const Feed = () => { + const navigate = useNavigate(); + + const handleClick = () => { + navigate(BLOG_URL); + }; return ( <> -
+
-
-
-
- Creative & Art -
User Experience Designer Employee
-
    -
  • -

    New York, USA

    -
  • -
  • -

    Full Time

    -
  • -
-
-
-

Globe Solution Ltd.

-
- 2h ago -
-
+
+
+
+ Creative & Art +
+ User Experience Designer Employee +
+
    +
  • +

    + New York, + USA +

    +
  • +
  • +

    + Full Time +

    +
  • +
+
+
+

Globe Solution Ltd.

+
+ 2h ago
+
-
-
-
- Finance & Accounting -
Foreign Language Research Analyst
-
    -
  • -

    New York, USA

    -
  • -
  • -

    Full Time

    -
  • -
-
-
-

Globe Solution Ltd.

-
- 2h ago -
-
+
+
+
+
+ Finance & Accounting +
+ Foreign Language Research Analyst +
+
    +
  • +

    + New York, + USA +

    +
  • +
  • +

    + Full Time +

    +
  • +
+
+
+

Globe Solution Ltd.

+
+ 2h ago
+
-
-
-
- Medical -
Medical Assistant, East Valley Primary Care
-
    -
  • -

    New York, USA

    -
  • -
  • -

    Full Time

    -
  • -
-
-
-

Globe Solution Ltd.

-
- 2h ago -
-
+
+
+
+
+ Medical +
+ Medical Assistant, East Valley Primary Care +
+
    +
  • +

    + New York, + USA +

    +
  • +
  • +

    + Full Time +

    +
  • +
+
+
+

Globe Solution Ltd.

+
+ 2h ago
+
-
-
-
- Corporate -
Foreign Language Research Analyst
-
    -
  • -

    New York, USA

    -
  • -
  • -

    Full Time

    -
  • -
-
-
-

Globe Solution Ltd.

-
- 2h ago -
-
+
+
+
+
+ Corporate +
+ Foreign Language Research Analyst +
+
    +
  • +

    + New York, + USA +

    +
  • +
  • +

    + Full Time +

    +
  • +
+
+
+

Globe Solution Ltd.

+
+ 2h ago
+
-
-
-
- Marketing -
User Experience Designer Employee
-
    -
  • -

    New York, USA

    -
  • -
  • -

    Full Time

    -
  • -
-
-
-

Globe Solution Ltd.

-
- 2h ago -
-
+
+
+
+
+ Marketing +
+ User Experience Designer Employee +
+
    +
  • +

    + New York, + USA +

    +
  • +
  • +

    + Full Time +

    +
  • +
+
+
+

Globe Solution Ltd.

+
+ 2h ago
+
-
-
-
- Programming & IT -
Medical Assistant, East Valley Primary Care
-
    -
  • -

    New York, USA

    -
  • -
  • -

    Full Time

    -
  • -
-
-
-

Globe Solution Ltd.

-
- 2h ago -
-
+
+
+
+
+ Programming & IT +
+ Medical Assistant, East Valley Primary Care +
+
    +
  • +

    + New York, + USA +

    +
  • +
  • +

    + Full Time +

    +
  • +
+
+
+

Globe Solution Ltd.

+
+ 2h ago
+
-
-
- Find More - -
+
+
+
+ Find More +
+
-
+
); };