Showing
17 changed files
with
561 additions
and
162 deletions
... | @@ -21,6 +21,19 @@ KHU-Hub repo: [khuhub.khu.ac.kr/2018102216/dev-profile](https://khuhub.khu.ac.kr | ... | @@ -21,6 +21,19 @@ KHU-Hub repo: [khuhub.khu.ac.kr/2018102216/dev-profile](https://khuhub.khu.ac.kr |
21 | 21 | ||
22 | ## <br> | 22 | ## <br> |
23 | 23 | ||
24 | +### Home Page | ||
25 | + 1. you can join or login with github. | ||
26 | + 2. you can search. | ||
27 | +![image](/uploads/f33744dd78985b881bfeff6162af0919/image.png) | ||
28 | + | ||
29 | +### Myprofile Page | ||
30 | + 1. You can see your profile information, github contributions, repositories, status at a glance. | ||
31 | +![image](/uploads/63eae503a0eb49b22bbe545c3c0c859a/image.png) | ||
32 | + | ||
33 | +### Editprofile Page | ||
34 | + 1. You can input or change your informations. | ||
35 | +![image](/uploads/55988a03a91f0dcd33656afe0ec04ff6/image.png) | ||
36 | + | ||
24 | ### test installation | 37 | ### test installation |
25 | 38 | ||
26 | This is the usage just for the being. | 39 | This is the usage just for the being. |
... | @@ -41,33 +54,34 @@ npm run dev:assets | ... | @@ -41,33 +54,34 @@ npm run dev:assets |
41 | ``` | 54 | ``` |
42 | 55 | ||
43 | <br> | 56 | <br> |
57 | + | ||
44 | ### Installation MongoDB | 58 | ### Installation MongoDB |
45 | 1. Access to the MongoDB homepage. | 59 | 1. Access to the MongoDB homepage. |
46 | - ![image](/uploads/3d5d283732343d4c5ff4b5c7bd16c78f/image.png) | 60 | +![homepage](https://oss-2020105657.s3.amazonaws.com/MongoDB+homepage.png) |
47 | 61 | ||
48 | 2. Select options and download MongoDB. | 62 | 2. Select options and download MongoDB. |
49 | - ![image](/uploads/46038b5c881bb18074dd8e732804f5d7/image.png) | 63 | +![image](/uploads/46038b5c881bb18074dd8e732804f5d7/image.png) |
50 | 64 | ||
51 | 3. If this screen appears when installing MongoDB, please select 'complete' and proceed. | 65 | 3. If this screen appears when installing MongoDB, please select 'complete' and proceed. |
52 | - ![image](/uploads/510d184825d6eaf04dcb2d254f03b918/image.png) | 66 | +![image](/uploads/510d184825d6eaf04dcb2d254f03b918/image.png) |
53 | 67 | ||
54 | 4. When you enter 'mongo' command in vsc terminal, it is installed well when the screen appears as below. | 68 | 4. When you enter 'mongo' command in vsc terminal, it is installed well when the screen appears as below. |
55 | - ![image](/uploads/202bf8555f6842938d15c6e3b0e789c1/image.png) | 69 | +![image](/uploads/202bf8555f6842938d15c6e3b0e789c1/image.png) |
56 | 70 | ||
57 | ### To setting environment variable. | 71 | ### To setting environment variable. |
58 | ps. When entering 'mongo' command in vsc terminal, skip this part if it runs well. | 72 | ps. When entering 'mongo' command in vsc terminal, skip this part if it runs well. |
59 | 73 | ||
60 | 1. Find folder where mongoDB is installed, and make a copy of the folder's route. | 74 | 1. Find folder where mongoDB is installed, and make a copy of the folder's route. |
61 | - ![image](/uploads/93b13c8df931ef11781d21ad574ee441/image.png) | 75 | +![image](/uploads/93b13c8df931ef11781d21ad574ee441/image.png) |
62 | 76 | ||
63 | 2. And you open the 'environment variable' page. If using window environment, you can use command (window + R) and input 'sysdm.cpl ,3'. And click 'environment variable'. | 77 | 2. And you open the 'environment variable' page. If using window environment, you can use command (window + R) and input 'sysdm.cpl ,3'. And click 'environment variable'. |
64 | - ![image](/uploads/64278904603d6b3cdb78a0689695344a/image.png) | 78 | +![image](/uploads/64278904603d6b3cdb78a0689695344a/image.png) |
65 | 79 | ||
66 | 3. You must find 'path' in 'system variable' categroy, not 'users variable'. If you find 'path' in 'system variable', then check 'path' and click 'Editing'. | 80 | 3. You must find 'path' in 'system variable' categroy, not 'users variable'. If you find 'path' in 'system variable', then check 'path' and click 'Editing'. |
67 | - ![image](/uploads/9077ec8854585640dfb526e45cbcb3fb/image.png) | 81 | +![image](/uploads/9077ec8854585640dfb526e45cbcb3fb/image.png) |
68 | 82 | ||
69 | 4. Create a new environmental variable path using the Mongo db address you copied earlier. | 83 | 4. Create a new environmental variable path using the Mongo db address you copied earlier. |
70 | - ![image](/uploads/0018e1de51ae1c10cc9a5d5bc01fcf9d/image.png) | 84 | +![image](/uploads/0018e1de51ae1c10cc9a5d5bc01fcf9d/image.png) |
71 | 85 | ||
72 | 5. Please check if Mongo Db is working well in fourth method of "Installation MongoDB". | 86 | 5. Please check if Mongo Db is working well in fourth method of "Installation MongoDB". |
73 | 87 | ||
... | @@ -79,7 +93,7 @@ npm run dev:assets | ... | @@ -79,7 +93,7 @@ npm run dev:assets |
79 | ### How to fill .env file. | 93 | ### How to fill .env file. |
80 | 1. If you clone our repository and downloads required modules, make new '.env' file. | 94 | 1. If you clone our repository and downloads required modules, make new '.env' file. |
81 | 2. Fill in the required values as shown below. | 95 | 2. Fill in the required values as shown below. |
82 | - ![image](/uploads/cbdf2726a8b5c6326378cd5fa8295726/image.png) | 96 | +![image](/uploads/cbdf2726a8b5c6326378cd5fa8295726/image.png) |
83 | 97 | ||
84 | ### API reference | 98 | ### API reference |
85 | 99 | ||
... | @@ -90,7 +104,9 @@ npm run dev:assets | ... | @@ -90,7 +104,9 @@ npm run dev:assets |
90 | [GitHub Contributuions API](https://api.github.com/graphql/) | 104 | [GitHub Contributuions API](https://api.github.com/graphql/) |
91 | 105 | ||
92 | <br> | 106 | <br> |
93 | -\\<!--[GitHub Repositories API](https://api.github.com/users/lsj8706/repos?sort=updated&per_page=2")--> | 107 | +\\<!--[GitHub Repositories API] |
108 | + | ||
109 | +### Libraries | ||
94 | 110 | ||
95 | ### License | 111 | ### License |
96 | 112 | ... | ... |
... | @@ -9,7 +9,7 @@ const handleRepo = (list) =>{ | ... | @@ -9,7 +9,7 @@ const handleRepo = (list) =>{ |
9 | list.forEach(element => { | 9 | list.forEach(element => { |
10 | const anchor = document.createElement("a"); | 10 | const anchor = document.createElement("a"); |
11 | anchor.href = element.url; | 11 | anchor.href = element.url; |
12 | - anchor.target = "_blank" | 12 | + anchor.target = "_blank"; |
13 | anchor.innerHTML = `<span class="repoName">${element.name}</span> : ${element.description} - <span class="repoStar">${element.stars} stars</span>` | 13 | anchor.innerHTML = `<span class="repoName">${element.name}</span> : ${element.description} - <span class="repoStar">${element.stars} stars</span>` |
14 | trendRepoBox.appendChild(anchor); | 14 | trendRepoBox.appendChild(anchor); |
15 | }); | 15 | }); | ... | ... |
1 | -const userContributionsBox = document.querySelector(".user-status__contributions"); | 1 | +const userContributionsBox = document.querySelector( |
2 | -const totalContributionIndicator = document.getElementById("jsTotalContributions"); | 2 | + ".user-status__contributions" |
3 | +); | ||
4 | +const totalContributionIndicator = document.getElementById( | ||
5 | + "jsTotalContributions" | ||
6 | +); | ||
3 | const userCharacterBox = document.querySelector(".user-status__character"); | 7 | const userCharacterBox = document.querySelector(".user-status__character"); |
4 | const userRepoBox = document.querySelector(".user-repo"); | 8 | const userRepoBox = document.querySelector(".user-repo"); |
5 | -const githubName = document.getElementById("jsGithubname").innerText; | 9 | +const githubNickname = document.getElementById("jsGithubNickname"); |
6 | const URL = `https://api.github.com/users/${githubName}/repos?sort=updated&per_page=2`; | 10 | const URL = `https://api.github.com/users/${githubName}/repos?sort=updated&per_page=2`; |
7 | 11 | ||
8 | - | 12 | +const handleImage = () => { |
9 | -const handleImage = () =>{ | ||
10 | const total = totalContributionIndicator.innerText; | 13 | const total = totalContributionIndicator.innerText; |
11 | const img = new Image(); | 14 | const img = new Image(); |
12 | - if (total>=0 && total<200){ | 15 | + if (total >= 0 && total < 200) { |
13 | - img.src ="https://oss-2020105657.s3.amazonaws.com/first.png"; | 16 | + img.src = "https://oss-2020105657.s3.amazonaws.com/first.png"; |
14 | img.alt = "1단계"; | 17 | img.alt = "1단계"; |
15 | - }else if (total>=200 && total<600){ | 18 | + } else if (total >= 200 && total < 600) { |
16 | - img.src ="https://oss-2020105657.s3.amazonaws.com/second.png"; | 19 | + img.src = "https://oss-2020105657.s3.amazonaws.com/second.png"; |
17 | img.alt = "2단계"; | 20 | img.alt = "2단계"; |
18 | - }else if (total>=600 && total<1200){ | 21 | + } else if (total >= 600 && total < 1200) { |
19 | img.src = "https://oss-2020105657.s3.amazonaws.com/third.png"; | 22 | img.src = "https://oss-2020105657.s3.amazonaws.com/third.png"; |
20 | img.alt = "3단계"; | 23 | img.alt = "3단계"; |
21 | - }else if (total>=1200 && total<2000){ | 24 | + } else if (total >= 1200 && total < 2000) { |
22 | img.src = "https://oss-2020105657.s3.amazonaws.com/four.png"; | 25 | img.src = "https://oss-2020105657.s3.amazonaws.com/four.png"; |
23 | img.alt = "4단계"; | 26 | img.alt = "4단계"; |
24 | - }else{ | 27 | + } else { |
25 | img.src = "https://oss-2020105657.s3.amazonaws.com/fifth.png"; | 28 | img.src = "https://oss-2020105657.s3.amazonaws.com/fifth.png"; |
26 | img.alt = "5단계"; | 29 | img.alt = "5단계"; |
27 | } | 30 | } |
28 | userCharacterBox.appendChild(img); | 31 | userCharacterBox.appendChild(img); |
29 | }; | 32 | }; |
30 | 33 | ||
31 | -const handleRepo = (list) =>{ | 34 | +const handleRepo = (list) => { |
32 | - list.forEach(element => { | 35 | + list.forEach((element) => { |
33 | const anchor = document.createElement("a"); | 36 | const anchor = document.createElement("a"); |
34 | anchor.href = element.html_url; | 37 | anchor.href = element.html_url; |
35 | - anchor.target = "_blank" | 38 | + anchor.target = "_blank"; |
36 | - anchor.innerHTML = `<div class =number><span class="repoName">${element.name}</span> : <span class="repoUrl">${element.html_url} </span></div>` | 39 | + anchor.innerHTML = `<div class =number><span class="repoName">${element.name}</span>:<span class="repoUrl">${element.html_url} </span></div>`; |
37 | userRepoBox.appendChild(anchor); | 40 | userRepoBox.appendChild(anchor); |
38 | }); | 41 | }); |
39 | - | ||
40 | }; | 42 | }; |
41 | 43 | ||
42 | const getGithubRepo = () =>{ | 44 | const getGithubRepo = () =>{ |
43 | - const response = fetch(URL).then(function(response){ | 45 | + const nickname = githubNickname.innerText; |
44 | - return response.json(); | 46 | + const userId = window.location.href.split("/users/")[1]; |
47 | + const response = fetch(`/users/${userId}/repo`,{headers:{nickname}}).then(function(reponse){ | ||
48 | + const data = reponse.json(); | ||
49 | + return data | ||
45 | }).then(function(data){ | 50 | }).then(function(data){ |
46 | - const trendRepoList = data.slice(0,2); | 51 | + handleRepo(data); |
47 | - handleRepo(trendRepoList); | 52 | + }) |
48 | - }); | 53 | +} |
49 | -}; | ||
50 | 54 | ||
51 | -const init=()=>{ | 55 | +const init = () => { |
52 | handleImage(); | 56 | handleImage(); |
53 | getGithubRepo(); | 57 | getGithubRepo(); |
54 | }; | 58 | }; |
55 | 59 | ||
56 | -if(userContributionsBox){ | 60 | +if (userContributionsBox) { |
57 | init(); | 61 | init(); |
58 | -}; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
62 | +} | ... | ... |
... | @@ -12,7 +12,7 @@ header { | ... | @@ -12,7 +12,7 @@ header { |
12 | .header__column { | 12 | .header__column { |
13 | ul { | 13 | ul { |
14 | display: flex; | 14 | display: flex; |
15 | - color: $blue; | 15 | + color: $lilac; |
16 | font-weight: 700; | 16 | font-weight: 700; |
17 | font-size: 20px; | 17 | font-size: 20px; |
18 | text-transform: uppercase; | 18 | text-transform: uppercase; | ... | ... |
... | @@ -4,26 +4,29 @@ | ... | @@ -4,26 +4,29 @@ |
4 | flex-direction: column; | 4 | flex-direction: column; |
5 | padding: 30px; | 5 | padding: 30px; |
6 | img { | 6 | img { |
7 | - width: 100px; | 7 | + width: 176px; |
8 | - height: 100px; | 8 | + height: 220px; |
9 | - object-fit: cover; | 9 | + object-fit: contain; |
10 | } | 10 | } |
11 | .fileUpload { | 11 | .fileUpload { |
12 | display: flex; | 12 | display: flex; |
13 | flex-direction: column; | 13 | flex-direction: column; |
14 | + input { | ||
15 | + font-size: 13px; | ||
16 | + } | ||
14 | } | 17 | } |
15 | input { | 18 | input { |
16 | - padding: 10px; | ||
17 | display: block; | 19 | display: block; |
18 | border: none; | 20 | border: none; |
19 | border-bottom: 1px solid #ccc; | 21 | border-bottom: 1px solid #ccc; |
20 | width: 40%; | 22 | width: 40%; |
21 | - opacity: 0.6; | 23 | + padding: 10px; |
22 | margin-top: 19px; | 24 | margin-top: 19px; |
23 | font-family: "Roboto", sans-serif; | 25 | font-family: "Roboto", sans-serif; |
24 | font-size: 18px; | 26 | font-size: 18px; |
25 | } | 27 | } |
26 | label { | 28 | label { |
29 | + color: #6456bb; | ||
27 | font-family: "Raleway", sans-serif; | 30 | font-family: "Raleway", sans-serif; |
28 | font-size: 13px; | 31 | font-size: 13px; |
29 | font-weight: bold; | 32 | font-weight: bold; |
... | @@ -38,15 +41,29 @@ | ... | @@ -38,15 +41,29 @@ |
38 | margin-top: 20px; | 41 | margin-top: 20px; |
39 | padding: 9px; | 42 | padding: 9px; |
40 | } | 43 | } |
44 | + | ||
41 | .box { | 45 | .box { |
46 | + margin-top: 50px; | ||
42 | input { | 47 | input { |
43 | - background-color: rgb(209, 219, 231); | 48 | + border-radius: 10px; |
49 | + background-color: #94a3ec; | ||
44 | box-shadow: 0 1px 1px rgba(0, 0, 0, 0.11), 0 2px 2px rgba(0, 0, 0, 0.11), | 50 | box-shadow: 0 1px 1px rgba(0, 0, 0, 0.11), 0 2px 2px rgba(0, 0, 0, 0.11), |
45 | 0 4px 4px rgba(0, 0, 0, 0.11), 0 6px 8px rgba(0, 0, 0, 0.11), | 51 | 0 4px 4px rgba(0, 0, 0, 0.11), 0 6px 8px rgba(0, 0, 0, 0.11), |
46 | 0 8px 16px rgba(0, 0, 0, 0.11); | 52 | 0 8px 16px rgba(0, 0, 0, 0.11); |
47 | font-family: "Raleway", sans-serif; | 53 | font-family: "Raleway", sans-serif; |
54 | + text-transform: uppercase; | ||
55 | + font-weight: bold; | ||
48 | opacity: 1; | 56 | opacity: 1; |
49 | font-size: 20px; | 57 | font-size: 20px; |
58 | + color: white; | ||
59 | + } | ||
60 | + input:hover { | ||
61 | + border-radius: 10px; | ||
62 | + background-color: #6456bb; | ||
63 | + -webkit-transform: scale(0.8); | ||
64 | + -ms-transform: scale(0.95); | ||
65 | + transform: scale(0.95); | ||
66 | + transition: 0.2s ease-in; | ||
50 | } | 67 | } |
51 | } | 68 | } |
52 | } | 69 | } | ... | ... |
... | @@ -5,24 +5,124 @@ | ... | @@ -5,24 +5,124 @@ |
5 | align-items: center; | 5 | align-items: center; |
6 | .home-title { | 6 | .home-title { |
7 | margin: 40px 0px; | 7 | margin: 40px 0px; |
8 | + width: 100%; | ||
8 | display: flex; | 9 | display: flex; |
9 | flex-direction: column; | 10 | flex-direction: column; |
10 | justify-content: center; | 11 | justify-content: center; |
11 | align-items: center; | 12 | align-items: center; |
13 | + | ||
12 | h2 { | 14 | h2 { |
13 | - font-size: 20px; | 15 | + font-size: 25px; |
14 | font-family: "Roboto", sans-serif; | 16 | font-family: "Roboto", sans-serif; |
15 | - font-weight: 400; | 17 | + font-weight: 700; |
16 | text-transform: uppercase; | 18 | text-transform: uppercase; |
19 | + color: rgb(30, 30, 150); | ||
17 | margin-bottom: 30px; | 20 | margin-bottom: 30px; |
18 | } | 21 | } |
19 | - h1 { | 22 | + span { |
20 | font-size: 50px; | 23 | font-size: 50px; |
21 | font-family: "Roboto", sans-serif; | 24 | font-family: "Roboto", sans-serif; |
22 | font-weight: 800; | 25 | font-weight: 800; |
26 | + width: 60%; | ||
27 | + text-align: center; | ||
28 | + text-transform: uppercase; | ||
29 | + background-image: linear-gradient(120deg, #acedff 0%, #ffaddd 100%); | ||
30 | + background-repeat: no-repeat; | ||
31 | + background-size: 100% 0.3em; | ||
32 | + background-position: 0 88%; | ||
33 | + transition: background-size 200ms ease-in; | ||
34 | + &:hover { | ||
35 | + background-size: 100% 88%; | ||
36 | + } | ||
37 | + } | ||
38 | + } | ||
39 | + | ||
40 | + .home-link { | ||
41 | + margin: 20px; | ||
42 | + font-family: "Roboto", sans-serif; | ||
43 | + font-size: 30px; | ||
44 | + font-weight: 700; | ||
45 | + display: flex; | ||
46 | + align-items: flex-end; | ||
47 | + align-content: flex-end; | ||
48 | + justify-items: flex-end; | ||
49 | + justify-content: center; | ||
50 | + align-items: center; | ||
23 | text-transform: uppercase; | 51 | text-transform: uppercase; |
52 | + a { | ||
53 | + color: $lilac; | ||
54 | + &:not(:last-child) { | ||
55 | + margin-right: 50px; | ||
56 | + } | ||
57 | + &:hover { | ||
58 | + color: rgb(106, 89, 233); | ||
59 | + } | ||
60 | + } | ||
61 | + } | ||
62 | + | ||
63 | + .home-search { | ||
64 | + margin-top: 30px; | ||
65 | + margin-bottom: 60px; | ||
66 | + display: flex; | ||
67 | + justify-content: space-evenly; | ||
68 | + align-items: center; | ||
69 | + background: #fff; | ||
70 | + border-radius: 500px; | ||
71 | + padding: 10px 25px 10px 25px; | ||
72 | + | ||
73 | + .home-search__form { | ||
74 | + display: flex; | ||
75 | + justify-content: space-evenly; | ||
76 | + align-items: center; | ||
77 | + background: #fff; | ||
78 | + border-radius: 500px; | ||
79 | + padding: 10px 25px 10px 25px; | ||
80 | + border: 1px solid #ccc; | ||
81 | + | ||
82 | + img { | ||
83 | + height: 30px; | ||
84 | + width: 30px; | ||
85 | + } | ||
86 | + | ||
87 | + input { | ||
88 | + padding: 5px; | ||
89 | + margin-left: 15px; | ||
90 | + margin-right: 15px; | ||
91 | + width: 300px; | ||
92 | + border-radius: 5px; | ||
93 | + background: transparent; | ||
94 | + border: 1px solid transparent; | ||
95 | + outline: none; | ||
96 | + font-size: 1.2rem; | ||
97 | + overflow-x: scroll; | ||
98 | + } | ||
99 | + button { | ||
100 | + border: none; | ||
101 | + background: none; | ||
102 | + padding: 0; | ||
103 | + i { | ||
104 | + background: transparent; | ||
105 | + border: none; | ||
106 | + i { | ||
107 | + font-size: 1.5rem; | ||
108 | + margin: 3px; | ||
109 | + } | ||
110 | + } | ||
111 | + i:hover { | ||
112 | + cursor: pointer; | ||
113 | + } | ||
114 | + } | ||
24 | } | 115 | } |
116 | + .home-search__form:hover { | ||
117 | + box-shadow: 0px 1px 4px -1px rgba(79, 78, 79, 1); | ||
25 | } | 118 | } |
119 | + } | ||
120 | + | ||
121 | + .boxShadow { | ||
122 | + box-shadow: 0 13px 10px -5px rgba(50, 50, 93, 0.25), | ||
123 | + 0 8px 10px -8px rgba(0, 0, 0, 0.3), 0 -6px 10px -6px rgba(0, 0, 0, 0.025); | ||
124 | + } | ||
125 | + | ||
26 | .home-quote { | 126 | .home-quote { |
27 | width: 100%; | 127 | width: 100%; |
28 | display: flex; | 128 | display: flex; |
... | @@ -30,9 +130,11 @@ | ... | @@ -30,9 +130,11 @@ |
30 | flex-direction: column; | 130 | flex-direction: column; |
31 | justify-content: center; | 131 | justify-content: center; |
32 | align-items: center; | 132 | align-items: center; |
33 | - padding: 20px; | 133 | + background-color: #f8f9ff; |
34 | - box-shadow: 0 13px 27px -5px rgba(50, 50, 93, 0.25), | 134 | + padding: 30px; |
35 | - 0 8px 16px -8px rgba(0, 0, 0, 0.3), 0 -6px 16px -6px rgba(0, 0, 0, 0.025); | 135 | + @extend .boxShadow; |
136 | + | ||
137 | + border-top: 3pt double #7f8bd0; | ||
36 | h2 { | 138 | h2 { |
37 | font-size: 40px; | 139 | font-size: 40px; |
38 | font-family: "Vollkorn", serif; | 140 | font-family: "Vollkorn", serif; |
... | @@ -40,57 +142,49 @@ | ... | @@ -40,57 +142,49 @@ |
40 | } | 142 | } |
41 | h3 { | 143 | h3 { |
42 | font-size: 25px; | 144 | font-size: 25px; |
43 | - opacity: 0.5; | 145 | + color: rgb(112, 114, 120); |
44 | font-family: "Vollkorn", serif; | 146 | font-family: "Vollkorn", serif; |
45 | - } | 147 | + font-weight: lighter; |
46 | - } | 148 | + margin-bottom: 10px; |
47 | - .home-search { | ||
48 | - display: flex; | ||
49 | - padding: 40px; | ||
50 | - justify-content: center; | ||
51 | - width: 100%; | ||
52 | - } | ||
53 | - | ||
54 | - .home-link { | ||
55 | - margin-top: 50px; | ||
56 | - font-family: "Roboto", sans-serif; | ||
57 | - font-size: 30px; | ||
58 | - font-weight: 700; | ||
59 | - display: flex; | ||
60 | - justify-content: center; | ||
61 | - align-items: center; | ||
62 | - a { | ||
63 | - color: $blue; | ||
64 | - &:not(:last-child) { | ||
65 | - margin-right: 50px; | ||
66 | - } | ||
67 | } | 149 | } |
68 | } | 150 | } |
69 | .gotoTrend { | 151 | .gotoTrend { |
70 | - margin-top: 50px; | ||
71 | display: flex; | 152 | display: flex; |
72 | - width: 120%; | 153 | + margin-top: 50px; |
154 | + width: 100%; | ||
155 | + padding: 40px; | ||
73 | text-align: center; | 156 | text-align: center; |
74 | flex-direction: column; | 157 | flex-direction: column; |
75 | justify-content: center; | 158 | justify-content: center; |
76 | align-items: center; | 159 | align-items: center; |
77 | - padding: 20px; | 160 | + background-color: #fffdf1; |
78 | - box-shadow: 0 13px 27px -5px rgba(50, 50, 93, 0.25), | 161 | + border-top: 3pt double #ffce72; |
79 | - 0 8px 16px -8px rgba(0, 0, 0, 0.3), 0 -6px 16px -6px rgba(0, 0, 0, 0.025); | 162 | + |
163 | + @extend .boxShadow; | ||
80 | h2 { | 164 | h2 { |
81 | color: #fb8500; | 165 | color: #fb8500; |
82 | - font-size: 25px; | 166 | + font-family: "Raleway", cursive; |
167 | + font-size: 30px; | ||
83 | font-weight: 700; | 168 | font-weight: 700; |
84 | - margin-bottom: 20px; | 169 | + margin-bottom: 30px; |
170 | + text-transform: uppercase; | ||
171 | + border-bottom: 3pt double $star; | ||
172 | + padding-bottom: 10px; | ||
173 | + width: 60%; | ||
174 | + i { | ||
175 | + color: $star; | ||
176 | + } | ||
85 | } | 177 | } |
86 | .gotoTrend-repos { | 178 | .gotoTrend-repos { |
87 | display: flex; | 179 | display: flex; |
88 | flex-direction: column; | 180 | flex-direction: column; |
89 | justify-content: center; | 181 | justify-content: center; |
90 | align-items: center; | 182 | align-items: center; |
183 | + | ||
91 | a { | 184 | a { |
92 | - font-size: 18px; | 185 | + font-size: 20px; |
93 | margin: 10px 0px; | 186 | margin: 10px 0px; |
187 | + font-family: "Raleway", cursive; | ||
94 | } | 188 | } |
95 | .repoName { | 189 | .repoName { |
96 | font-weight: 600; | 190 | font-weight: 600; | ... | ... |
... | @@ -9,32 +9,63 @@ | ... | @@ -9,32 +9,63 @@ |
9 | 9 | ||
10 | h3 { | 10 | h3 { |
11 | display: flex; | 11 | display: flex; |
12 | - justify-content: center; | 12 | + justify-content: left; |
13 | align-items: center; | 13 | align-items: center; |
14 | - margin-top: 50px; | 14 | + margin: 50px 0px; |
15 | font-weight: 700; | 15 | font-weight: 700; |
16 | font-family: "Roboto", sans-serif; | 16 | font-family: "Roboto", sans-serif; |
17 | - font-size: 30px; | 17 | + font-size: 27px; |
18 | + color: rgb(15, 100, 142); | ||
18 | opacity: 0.8; | 19 | opacity: 0.8; |
19 | } | 20 | } |
20 | 21 | ||
21 | a { | 22 | a { |
23 | + .login-github::before { | ||
24 | + transform: scaleX(0); | ||
25 | + transform-origin: bottom right; | ||
26 | + } | ||
27 | + | ||
28 | + .login-github:hover::before { | ||
29 | + transform: scaleX(1); | ||
30 | + transform-origin: bottom left; | ||
31 | + } | ||
32 | + | ||
33 | + .login-github::before { | ||
34 | + content: " "; | ||
35 | + display: block; | ||
36 | + position: absolute; | ||
37 | + top: 0; | ||
38 | + right: 0; | ||
39 | + bottom: 0; | ||
40 | + left: 0; | ||
41 | + inset: 0 0 0 0; | ||
42 | + background: hsl(200 100% 80%); | ||
43 | + z-index: -1; | ||
44 | + transition: transform 0.3s ease; | ||
45 | + } | ||
46 | + | ||
22 | .login-github { | 47 | .login-github { |
23 | - display: flex; | 48 | + position: relative; |
24 | - justify-content: center; | 49 | + font-size: 5rem; |
25 | - border-radius: 25px; | 50 | + } |
26 | - align-items: center; | 51 | + |
27 | - margin-top: 30px; | 52 | + html { |
28 | - height: 80px; | 53 | + block-size: 100%; |
29 | - background-color: rgb(93, 32, 167); | 54 | + inline-size: 100%; |
30 | - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.11), 0 2px 2px rgba(0, 0, 0, 0.11), | 55 | + } |
31 | - 0 4px 4px rgba(0, 0, 0, 0.11), 0 6px 8px rgba(0, 0, 0, 0.11), | 56 | + |
32 | - 0 8px 16px rgba(0, 0, 0, 0.11); | 57 | + body { |
33 | - font-family: "Raleway", sans-serif; | 58 | + min-block-size: 100%; |
34 | - color: white; | 59 | + min-inline-size: 100%; |
35 | - font-size: 50px; | 60 | + margin: 0; |
36 | - font-weight: 500; | 61 | + box-sizing: border-box; |
37 | - font-family: "Roboto", sans-serif; | 62 | + display: grid; |
38 | - font-size: 25px; | 63 | + place-content: center; |
64 | + } | ||
65 | + | ||
66 | + @media (orientation: landscape) { | ||
67 | + body { | ||
68 | + grid-auto-flow: column; | ||
69 | + } | ||
39 | } | 70 | } |
40 | } | 71 | } | ... | ... |
1 | .user-quote { | 1 | .user-quote { |
2 | - margin-top: 20px; | ||
3 | h2 { | 2 | h2 { |
4 | font-size: 30px; | 3 | font-size: 30px; |
5 | font-family: "Vollkorn", serif; | 4 | font-family: "Vollkorn", serif; |
6 | - margin: 15px 0px; | 5 | + margin-top: 40px; |
7 | } | 6 | } |
8 | h3 { | 7 | h3 { |
9 | display: flex; | 8 | display: flex; |
10 | - margin-right: 100px; | ||
11 | flex-direction: row-reverse; | 9 | flex-direction: row-reverse; |
10 | + margin-top: 20px; | ||
11 | + margin-right: 80px; | ||
12 | font-size: 20px; | 12 | font-size: 20px; |
13 | - opacity: 0.5; | ||
14 | font-family: "Vollkorn", serif; | 13 | font-family: "Vollkorn", serif; |
14 | + color: #74828e; | ||
15 | + font-weight: lighter; | ||
15 | } | 16 | } |
16 | } | 17 | } |
17 | -label { | 18 | + |
19 | +.labelSetting { | ||
20 | + width: 100px; | ||
21 | + display: inline-flex; | ||
22 | + flex-direction: row; | ||
23 | + justify-content: flex-end; | ||
18 | font-family: "Raleway", sans-serif; | 24 | font-family: "Raleway", sans-serif; |
19 | font-size: 13px; | 25 | font-size: 13px; |
20 | font-weight: bold; | 26 | font-weight: bold; |
21 | - padding: 10px; | 27 | + margin: 2px; |
28 | + color: $blue; | ||
22 | } | 29 | } |
30 | +.infoSetting { | ||
31 | + display: inline-flex; | ||
32 | + flex-direction: row; | ||
33 | + justify-content: flex-end; | ||
34 | + font-family: "Roboto", sans-serif; | ||
35 | + font-size: 20px; | ||
36 | + font-weight: bold; | ||
37 | + padding: 2px; | ||
38 | + color: #1e1e1ed9; | ||
39 | + margin: 10px; | ||
40 | +} | ||
41 | +.mainText { | ||
42 | + display: inline-flex; | ||
43 | + font-family: "Raleway", sans-serif; | ||
44 | + font-size: 25px; | ||
45 | + font-weight: bolder; | ||
46 | + margin: 5px; | ||
47 | + color: #392f76; | ||
48 | +} | ||
49 | + | ||
50 | +.boxEffect { | ||
51 | + content: ""; | ||
52 | + bottom: 15px; | ||
53 | + right: 10px; | ||
54 | + left: auto; | ||
55 | + background: #777; | ||
56 | + -webkit-box-shadow: 0 15px 10px #777; | ||
57 | + -moz-box-shadow: 0 15px 10px #777; | ||
58 | + box-shadow: 0 15px 10px #777; | ||
59 | + -webkit-transform: rotate(-1deg); | ||
60 | + -moz-transform: rotate(-1deg); | ||
61 | + -o-transform: rotate(-1deg); | ||
62 | + -ms-transform: rotate(-1deg); | ||
63 | + transform: rotate(-1deg); | ||
64 | +} | ||
65 | + | ||
66 | +//#fff5f6 | ||
67 | +//#f8f8ff | ||
68 | +//#f2f3f8; | ||
69 | +//lavender | ||
70 | +//#ecedfc | ||
71 | +//#e3edf7 | ||
72 | +//#ddeeff | ||
73 | +//#fff6c3 | ||
74 | + | ||
23 | .user-profile { | 75 | .user-profile { |
76 | + margin-bottom: 50px; | ||
77 | + margin-top: 30px; | ||
78 | + margin-right: 23px; | ||
79 | + width: 600px; | ||
80 | + padding: 10px; | ||
81 | + padding-bottom: 50px; | ||
82 | + background-color: #fff6c3; | ||
83 | + @extend .boxEffect; | ||
84 | + | ||
24 | .user-profile__column { | 85 | .user-profile__column { |
25 | img { | 86 | img { |
26 | - width: 100px; | 87 | + width: 176px; |
27 | - height: 100px; | 88 | + height: 220px; |
28 | - object-fit: cover; | 89 | + object-fit: contain; |
90 | + margin: 5px; | ||
29 | } | 91 | } |
30 | .user-profile__link { | 92 | .user-profile__link { |
31 | display: flex; | 93 | display: flex; |
32 | font-family: "Raleway", sans-serif; | 94 | font-family: "Raleway", sans-serif; |
33 | - flex-wrap: wrap; | ||
34 | font-weight: bold; | 95 | font-weight: bold; |
35 | - width: 5px; | 96 | + font-size: 15px; |
36 | - color: rgb(92, 92, 221); | 97 | + color: rgb(70, 70, 216); |
98 | + margin: 5px; | ||
99 | + padding: 2px; | ||
100 | + a { | ||
101 | + margin: 5px; | ||
102 | + margin-right: 15px; | ||
103 | + } | ||
37 | } | 104 | } |
105 | + .user-profile__info { | ||
106 | + h3 { | ||
107 | + flex: 0 0 100px; | ||
108 | + @extend .labelSetting; | ||
38 | } | 109 | } |
110 | + h4 { | ||
111 | + @extend .infoSetting; | ||
112 | + } | ||
113 | + .user-profile__career { | ||
114 | + display: flex; | ||
115 | + } | ||
116 | + .user-profile__tech { | ||
117 | + display: flex; | ||
118 | + } | ||
119 | + .user-profile__introduction { | ||
120 | + width: 100%; | ||
121 | + overflow: hidden; | ||
122 | + word-wrap: break-word; | ||
123 | + word-break: break-all; | ||
124 | + } | ||
125 | + ul { | ||
126 | + display: flex; | ||
127 | + flex-direction: column; | ||
128 | + font-size: 20px; | ||
129 | + font-weight: bold; | ||
130 | + padding: 2px; | ||
131 | + color: rgba(0, 0, 0, 0.85); | ||
132 | + margin: 10px; | ||
133 | + } | ||
134 | + } | ||
135 | + } | ||
136 | +} | ||
137 | + | ||
138 | +.user-git { | ||
139 | + margin-left: 20px; | ||
140 | + .user-status { | ||
141 | + .user-status__contributions { | ||
142 | + margin-top: 40px; | ||
143 | + h3 { | ||
144 | + @extend .mainText; | ||
145 | + } | ||
146 | + span { | ||
147 | + color: orange; | ||
148 | + display: inline-flex; | ||
149 | + font-family: "Raleway", sans-serif; | ||
150 | + font-size: 40px; | ||
151 | + font-weight: bolder; | ||
152 | + margin: 5px; | ||
153 | + } | ||
154 | + img { | ||
155 | + width: 600px; | ||
156 | + height: auto; | ||
157 | + object-fit: cover; | ||
158 | + margin: 5px; | ||
159 | + } | ||
160 | + } | ||
161 | + | ||
162 | + .user-repositories { | ||
163 | + margin-top: 30px; | ||
164 | + | ||
165 | + h3 { | ||
166 | + margin-top: 15px; | ||
167 | + margin-bottom: 10px; | ||
168 | + text-transform: uppercase; | ||
169 | + @extend .mainText; | ||
170 | + } | ||
171 | + .user-repo { | ||
172 | + margin-top: 50px; | ||
173 | + .repoName { | ||
174 | + display: inline-flex; | ||
175 | + flex-direction: row; | ||
176 | + justify-content: flex-end; | ||
177 | + font-family: "Raleway", cursive; | ||
178 | + font-size: 18px; | ||
179 | + font-weight: bold; | ||
180 | + padding: 2px; | ||
181 | + text-transform: uppercase; | ||
182 | + color: #1e1e1ed9; | ||
183 | + margin: 5px; | ||
184 | + width: 150px; | ||
185 | + } | ||
186 | + .repoUrl { | ||
187 | + display: inline-flex; | ||
188 | + flex-direction: row; | ||
189 | + font-family: "Roboto", sans-serif; | ||
190 | + font-size: 20px; | ||
191 | + font-weight: 400; | ||
192 | + color: #6f6f6f; | ||
193 | + margin: 10px; | ||
194 | + } | ||
195 | + .repoUrl:hover { | ||
196 | + display: inline-flex; | ||
197 | + flex-direction: row; | ||
198 | + font-family: "Roboto", sans-serif; | ||
199 | + font-size: 20px; | ||
200 | + font-weight: 400; | ||
201 | + text-decoration: underline; | ||
202 | + color: #6868af; | ||
203 | + margin: 10px; | ||
204 | + } | ||
205 | + } | ||
206 | + } | ||
207 | + | ||
208 | + .user-status__character { | ||
209 | + margin-top: 60px; | ||
210 | + margin-left: 10px; | ||
211 | + display: flex; | ||
212 | + flex-direction: column; | ||
213 | + h3 { | ||
214 | + @extend .mainText; | ||
215 | + } | ||
216 | + img { | ||
217 | + max-width: 200px; | ||
218 | + height: auto; | ||
219 | + object-fit: cover; | ||
220 | + margin-top: 20px; | ||
221 | + } | ||
222 | + } | ||
223 | + } | ||
224 | +} | ||
225 | + | ||
226 | +.pageLayout { | ||
227 | + display: flex; | ||
228 | + flex-direction: row; | ||
39 | } | 229 | } | ... | ... |
... | @@ -13,18 +13,17 @@ const getQuote = async (req, res) => { | ... | @@ -13,18 +13,17 @@ const getQuote = async (req, res) => { |
13 | return { quote, author }; | 13 | return { quote, author }; |
14 | }; | 14 | }; |
15 | 15 | ||
16 | - | ||
17 | export const handleHome = async (req, res) => { | 16 | export const handleHome = async (req, res) => { |
18 | const quote = await getQuote(); | 17 | const quote = await getQuote(); |
19 | res.render("home", { | 18 | res.render("home", { |
20 | pageTitle: "Home", | 19 | pageTitle: "Home", |
21 | quote: quote.quote, | 20 | quote: quote.quote, |
22 | - author: quote.author | 21 | + author: quote.author, |
23 | }); | 22 | }); |
24 | }; | 23 | }; |
25 | 24 | ||
26 | export const getUserDetail = async (req, res) => { | 25 | export const getUserDetail = async (req, res) => { |
27 | - try{ | 26 | + try { |
28 | const id = req.params.id; | 27 | const id = req.params.id; |
29 | const quote = await getQuote(); | 28 | const quote = await getQuote(); |
30 | const user = await User.findById(id); | 29 | const user = await User.findById(id); |
... | @@ -34,15 +33,14 @@ export const getUserDetail = async (req, res) => { | ... | @@ -34,15 +33,14 @@ export const getUserDetail = async (req, res) => { |
34 | quote: quote.quote, | 33 | quote: quote.quote, |
35 | author: quote.author, | 34 | author: quote.author, |
36 | user, | 35 | user, |
37 | - totalContributions: totalCon, | 36 | + totalContributions: totalCon |
38 | }); | 37 | }); |
39 | - } catch(error){ | 38 | + } catch (error) { |
40 | console.log(error); | 39 | console.log(error); |
41 | res.redirect("/"); | 40 | res.redirect("/"); |
42 | } | 41 | } |
43 | }; | 42 | }; |
44 | 43 | ||
45 | - | ||
46 | export const getEditProfile = async (req, res) => { | 44 | export const getEditProfile = async (req, res) => { |
47 | const { | 45 | const { |
48 | user: { _id: id }, | 46 | user: { _id: id }, |
... | @@ -84,7 +82,7 @@ export const postEditProfile = async (req, res) => { | ... | @@ -84,7 +82,7 @@ export const postEditProfile = async (req, res) => { |
84 | ); | 82 | ); |
85 | req.session.passport.user = updatedUser; | 83 | req.session.passport.user = updatedUser; |
86 | //console.log(updatedUser); | 84 | //console.log(updatedUser); |
87 | - res.redirect("/users/edit-profile"); | 85 | + res.redirect(`/users/${id}`); |
88 | } catch (error) { | 86 | } catch (error) { |
89 | console.log(error); | 87 | console.log(error); |
90 | res.redirect("/"); | 88 | res.redirect("/"); |
... | @@ -132,7 +130,7 @@ export const githubLoginCallback = async (_, __, profile, done) => { | ... | @@ -132,7 +130,7 @@ export const githubLoginCallback = async (_, __, profile, done) => { |
132 | avatarUrl, | 130 | avatarUrl, |
133 | githubUrl, | 131 | githubUrl, |
134 | name, | 132 | name, |
135 | - email, | 133 | |
136 | }); | 134 | }); |
137 | return done(null, newUser); | 135 | return done(null, newUser); |
138 | } | 136 | } |
... | @@ -151,16 +149,40 @@ export const logout = (req, res) => { | ... | @@ -151,16 +149,40 @@ export const logout = (req, res) => { |
151 | res.redirect("/"); | 149 | res.redirect("/"); |
152 | }; | 150 | }; |
153 | 151 | ||
154 | -const getContributions = async(username) =>{ | 152 | +const getContributions = async (username) => { |
155 | const token = process.env.GH_SECRET_SH; | 153 | const token = process.env.GH_SECRET_SH; |
156 | const headers = { | 154 | const headers = { |
157 | - 'Authorization': `bearer ${token}`, | 155 | + Authorization: `bearer ${token}`, |
158 | }; | 156 | }; |
159 | const body = { | 157 | const body = { |
160 | - "query": `query {user(login: "${username}") {contributionsCollection {contributionCalendar {totalContributions}}}}` | 158 | + query: `query {user(login: "${username}") {contributionsCollection {contributionCalendar {totalContributions}}}}`, |
161 | }; | 159 | }; |
162 | - const response = await fetch('https://api.github.com/graphql', { method: "POST", body: JSON.stringify(body), headers: headers }); | 160 | + const response = await fetch("https://api.github.com/graphql", { |
161 | + method: "POST", | ||
162 | + body: JSON.stringify(body), | ||
163 | + headers: headers, | ||
164 | + }); | ||
163 | const totalContributions = await response.json(); | 165 | const totalContributions = await response.json(); |
164 | - const total = totalContributions.data.user.contributionsCollection.contributionCalendar.totalContributions; | 166 | + const total = |
167 | + totalContributions.data.user.contributionsCollection.contributionCalendar | ||
168 | + .totalContributions; | ||
165 | return total; | 169 | return total; |
166 | }; | 170 | }; |
171 | + | ||
172 | +export const getRepos = async(req,res) =>{ | ||
173 | + try{ | ||
174 | + const githubNickname = req.headers.nickname | ||
175 | + const URL = `https://api.github.com/users/${githubNickname}/repos?sort=updated&per_page=2`; | ||
176 | + const response = await fetch(URL,{ | ||
177 | + headers: { | ||
178 | + authorization: `token ${process.env.GH_SECRET_SH}` | ||
179 | + } | ||
180 | + }).then(function (response) { | ||
181 | + return response.json(); | ||
182 | + }).then(function (data) { | ||
183 | + return res.send(data); | ||
184 | + }); | ||
185 | + }catch(error){ | ||
186 | + console.log(error); | ||
187 | + } | ||
188 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | import express from "express"; | 1 | import express from "express"; |
2 | import { | 2 | import { |
3 | getEditProfile, | 3 | getEditProfile, |
4 | + getRepos, | ||
4 | getUserDetail, | 5 | getUserDetail, |
5 | handleUsers, | 6 | handleUsers, |
6 | postEditProfile, | 7 | postEditProfile, |
... | @@ -20,5 +21,6 @@ userRouter.post( | ... | @@ -20,5 +21,6 @@ userRouter.post( |
20 | ); | 21 | ); |
21 | 22 | ||
22 | userRouter.get("/:id", getUserDetail); | 23 | userRouter.get("/:id", getUserDetail); |
24 | +userRouter.get("/:id/repo", getRepos); | ||
23 | 25 | ||
24 | export default userRouter; | 26 | export default userRouter; | ... | ... |
... | @@ -4,13 +4,8 @@ block content | ... | @@ -4,13 +4,8 @@ block content |
4 | .home | 4 | .home |
5 | .home-title | 5 | .home-title |
6 | h2 "Develop your value" | 6 | h2 "Develop your value" |
7 | - h1 Developer Profile | 7 | + span Developer Profile |
8 | - .home-quote | 8 | + |
9 | - h2=quote | ||
10 | - h3=author | ||
11 | - .home-search | ||
12 | - form.home-search__form | ||
13 | - input(type="text" id="jsInput" placeholder="Google 검색") | ||
14 | .home-link | 9 | .home-link |
15 | if !loggedUser | 10 | if !loggedUser |
16 | a(href="/join") Join | 11 | a(href="/join") Join |
... | @@ -18,8 +13,22 @@ block content | ... | @@ -18,8 +13,22 @@ block content |
18 | else | 13 | else |
19 | a(href=`/users/${loggedUser._id}`) My profile | 14 | a(href=`/users/${loggedUser._id}`) My profile |
20 | 15 | ||
16 | + .home-search | ||
17 | + form.home-search__form | ||
18 | + a(href="https://google.com" target="_blank") | ||
19 | + img(src="https://user-images.githubusercontent.com/48612525/86507657-d54fbd80-bd8e-11ea-866b-ac26496481ae.png" alt="google icon") | ||
20 | + input(type="text" id="jsInput" placeholder="Google 검색") | ||
21 | + button | ||
22 | + i.fa.fa-search(aria-hidden="true") | ||
23 | + | ||
24 | + .home-quote | ||
25 | + h2=quote | ||
26 | + h3=author | ||
27 | + | ||
28 | + | ||
21 | .gotoTrend#jsGotoTrend | 29 | .gotoTrend#jsGotoTrend |
22 | - h2 Today's Trending Repositories: | 30 | + h2 Today's Trending Repositories |
31 | + i.fas.fa-link | ||
23 | .gotoTrend-repos#jsGotoTrendRepos | 32 | .gotoTrend-repos#jsGotoTrendRepos |
24 | span#jsIndicator Waiting.... | 33 | span#jsIndicator Waiting.... |
25 | block scripts | 34 | block scripts | ... | ... |
1 | extends layouts/main | 1 | extends layouts/main |
2 | 2 | ||
3 | block content | 3 | block content |
4 | - i.fas.fa-location-arrow | 4 | + h3 Click Below to Join Us! |
5 | - h3 Join Us! | ||
6 | a(href="/auth/github") | 5 | a(href="/auth/github") |
7 | .login-github | 6 | .login-github |
8 | i.fab.fa-github | 7 | i.fab.fa-github |
9 | span Join with GitHub | 8 | span Join with GitHub |
10 | 9 | ||
11 | 10 | ||
11 | + | ||
12 | + | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | extends layouts/main | 1 | extends layouts/main |
2 | 2 | ||
3 | block content | 3 | block content |
4 | - i.fas.fa-location-arrow | 4 | + h3 Click Below to Login with GitHub! |
5 | - h3 Login with GitHub! | ||
6 | a(href="/auth/github") | 5 | a(href="/auth/github") |
7 | .login-github | 6 | .login-github |
8 | i.fab.fa-github | 7 | i.fab.fa-github | ... | ... |
... | @@ -6,48 +6,69 @@ block content | ... | @@ -6,48 +6,69 @@ block content |
6 | h3=author | 6 | h3=author |
7 | 7 | ||
8 | hr | 8 | hr |
9 | + .pageLayout | ||
9 | .user-profile | 10 | .user-profile |
10 | .user-profile__column | 11 | .user-profile__column |
11 | img(src=`/${user.avatarUrl}`) | 12 | img(src=`/${user.avatarUrl}`) |
12 | .user-profile__link | 13 | .user-profile__link |
13 | - a(href=user.githubUrl target="_blank") Github | 14 | + a(href=user.githubUrl target="_blank") GitHub |
15 | + i.fab.fa-github | ||
14 | a(href=`//${user.blogUrl}` target="_blank") Blog | 16 | a(href=`//${user.blogUrl}` target="_blank") Blog |
17 | + i.fas.fa-link | ||
15 | .user-profile__column | 18 | .user-profile__column |
16 | .user-profile__info | 19 | .user-profile__info |
17 | .user-profile__name | 20 | .user-profile__name |
18 | - h3 NAME: | 21 | + h3 NAME |
19 | h4=user.name | 22 | h4=user.name |
20 | .user-profile__github | 23 | .user-profile__github |
21 | - h3 GITHUB NICKNAME: | 24 | + h3 GITHUB |
22 | - h4#jsGithubname=user.githubName | 25 | + br |
26 | + |NICKNAME | ||
27 | + h4#jsGithubNickname=user.githubName | ||
23 | .user-profile__email | 28 | .user-profile__email |
24 | - h3 EMAIL: | 29 | + h3 EMAIL |
25 | h4=user.email | 30 | h4=user.email |
26 | .user-profile__school | 31 | .user-profile__school |
27 | - h3 SCHOOL: | 32 | + h3 SCHOOL |
28 | h4=user.school | 33 | h4=user.school |
29 | .user-profile__tech | 34 | .user-profile__tech |
30 | - h3 TECH: | 35 | + h3 TECH |
31 | ul | 36 | ul |
32 | each tech in user.tech | 37 | each tech in user.tech |
33 | li=tech | 38 | li=tech |
34 | .user-profile__career | 39 | .user-profile__career |
35 | - h3 CAREER: | 40 | + h3 CAREER |
36 | ul | 41 | ul |
37 | each career in user.career | 42 | each career in user.career |
38 | - li=career | 43 | + li.career_list=career |
39 | .user-profile__introduction | 44 | .user-profile__introduction |
40 | - h3 SELF-INTRODUCTION: | 45 | + h3 SELF |
46 | + br | ||
47 | + |INTRODUCTION | ||
41 | h4=user.introduction | 48 | h4=user.introduction |
42 | - hr | 49 | + |
50 | + .user-git | ||
43 | .user-status | 51 | .user-status |
44 | .user-status__contributions | 52 | .user-status__contributions |
53 | + h3 YOU'VE MADE | ||
45 | span#jsTotalContributions=totalContributions | 54 | span#jsTotalContributions=totalContributions |
55 | + h3 CONTRIBUTIONS! | ||
46 | img(src=`http://ghchart.rshah.org/${user.githubName}` alt="Name Your Github chart") | 56 | img(src=`http://ghchart.rshah.org/${user.githubName}` alt="Name Your Github chart") |
47 | - .user-status__character | 57 | + |
48 | - h3 Your step | 58 | + |
49 | .user-repositories | 59 | .user-repositories |
50 | .user-repo | 60 | .user-repo |
51 | - h3 Repositories | 61 | + h3 Your recent updated repositories: |
62 | + | ||
63 | + | ||
64 | + .user-status__character | ||
65 | + h3 YOUR STATUS | ||
66 | + | ||
67 | + | ||
68 | + | ||
69 | + | ||
70 | + | ||
71 | + | ||
72 | + | ||
52 | block scripts | 73 | block scripts |
53 | script(src="/static/js/githubInfo.js") | 74 | script(src="/static/js/githubInfo.js") | ... | ... |
-
Please register or login to post a comment