Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 84a4c90

Browse files
authored
Merge pull request coderplex-org#223 from coderplex/develop
Add terms and privacy pages
2 parents 68cbc1a + f9143e6 commit 84a4c90

File tree

8 files changed

+564
-135
lines changed

8 files changed

+564
-135
lines changed

components/common/footer/index.js

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React from 'react';
22
import styled from 'react-emotion';
3+
import Link from 'next/link';
34
import { Flex, Box } from 'grid-styled/emotion';
45
import FaFacebook from 'react-icons/lib/fa/facebook';
56
import FaYoutube from 'react-icons/lib/fa/youtube-play';
@@ -12,7 +13,8 @@ import { baseEventsURL, subscribeURL } from '../../../utils/urls';
1213

1314
const Footer = styled.footer`
1415
background: #222;
15-
color: #fff;
16+
text-align: center;
17+
color: rgba(255, 255, 255, 0.7);
1618
@media (max-width: 480px) {
1719
.follow {
1820
background: #111;
@@ -114,6 +116,44 @@ const Message = styled.div`
114116
}
115117
`;
116118

119+
const FooterLinks = styled.ul`
120+
list-style: none;
121+
margin: 0;
122+
padding: 0;
123+
display: flex;
124+
width: 100%;
125+
justify-content: center;
126+
@media (min-width: 48em) {
127+
width: 50%;
128+
}
129+
`;
130+
131+
const FooterLink = styled.li`
132+
margin: 20px 10px;
133+
@media (min-width: 48em) {
134+
margin: 0 10px;
135+
}
136+
& a {
137+
color: rgba(255, 255, 255, 0.7);
138+
text-decoration: none;
139+
transition: all 0.2s;
140+
&:hover {
141+
color: rgba(255, 255, 255, 1);
142+
}
143+
}
144+
`;
145+
146+
const footerLinks = [
147+
{
148+
title: 'Terms & Conditions',
149+
path: '/terms',
150+
},
151+
{
152+
title: 'Privacy Policy',
153+
path: '/privacy',
154+
},
155+
];
156+
117157
export default class FooterBar extends React.Component {
118158
state = {
119159
subscribersEmail: '',
@@ -175,7 +215,7 @@ export default class FooterBar extends React.Component {
175215
return (
176216
<Footer>
177217
<Container>
178-
<Flex flexWrap="wrap" py={[0, 4]}>
218+
<Flex flexWrap="wrap" py={[0, 2]}>
179219
<Flex
180220
alignItems="center"
181221
flexDirection="column"
@@ -239,6 +279,20 @@ export default class FooterBar extends React.Component {
239279
</Box>
240280
</Flex>
241281
</Flex>
282+
<Flex py={[4, 3]} px={[3, 0]} flexWrap="wrap" alignItems="center" justifyContent="space-between">
283+
<Box width={[1, 1 / 2]}>&copy; Copyright {new Date().getFullYear()} - Coderplex - All Rights Reserved.</Box>
284+
<FooterLinks>
285+
{footerLinks.map(item => (
286+
<FooterLink key={item.path}>
287+
<Link href={item.path}>
288+
<a>
289+
<span>{item.title}</span>
290+
</a>
291+
</Link>
292+
</FooterLink>
293+
))}
294+
</FooterLinks>
295+
</Flex>
242296
</Container>
243297
</Footer>
244298
);

config/meta-info.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,17 @@
3030
"title": "Our community member | Coderplex",
3131
"description": "List of all our community members",
3232
"image": ""
33+
},
34+
"privacy": {
35+
"title": "Privacy Policy of Coderplex Foundation",
36+
"description":
37+
"This page is used to inform website visitors regarding our policies with the collection, use, and disclosure of Personal Information if anyone decided to use our Service, the Coderplex website.",
38+
"image": ""
39+
},
40+
"terms": {
41+
"title": "Privacy Policy of Coderplex Foundation",
42+
"description":
43+
"This page is used to inform website visitors regarding our terms and conditions which outline the rules and regulations for the use of Coderplex Foundation's Website.",
44+
"image": ""
3345
}
3446
}

next.config.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ module.exports = {
3232
'/learn': { page: '/learn' },
3333
'/space': { page: '/space' },
3434
'/join': { page: '/join' },
35+
'/terms': { page: '/terms' },
36+
'/privacy': { page: '/privacy' },
3537
};
3638
const getSubject = subjectId => {
3739
switch (subjectId) {

package.json

Lines changed: 55 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
"main": "index.js",
66
"scripts": {
77
"test": "xo",
8-
"lint":
9-
"prettier 'utils/**/*.js' 'components/**/*.js' 'pages/**/*.js' 'lib/**/*.js' 'hocs/**/*.js' '*.js' '*.json' --write && xo && markdownlint .",
8+
"lint": "prettier 'utils/**/*.js' 'components/**/*.js' 'pages/**/*.js' 'lib/**/*.js' 'hocs/**/*.js' '*.js' '*.json' --write && xo && markdownlint .",
109
"precommit": "lint-staged",
1110
"analyze": "cross-env ANALYZE=1 next build",
1211
"dev": "cross-env NODE_ENV=development node server.js",
@@ -18,19 +17,33 @@
1817
},
1918
"xo": {
2019
"parser": "babel-eslint",
21-
"extends": ["prettier", "prettier/react", "plugin:react/recommended"],
22-
"env": ["browser", "node"],
20+
"extends": [
21+
"prettier",
22+
"prettier/react",
23+
"plugin:react/recommended"
24+
],
25+
"env": [
26+
"browser",
27+
"node"
28+
],
2329
"rules": {
2430
"linebreak-style": 0,
2531
"react/display-name": 0,
26-
"react/prop-types": 0
32+
"react/prop-types": 0,
33+
"react/no-unescaped-entities": 0
2734
},
2835
"space:": 2,
29-
"ignores": ["next.config.js"],
36+
"ignores": [
37+
"next.config.js"
38+
],
3039
"overrides": [
3140
{
3241
"files": "**/__tests__/*.test.js",
33-
"globals": ["describe", "it", "expect"]
42+
"globals": [
43+
"describe",
44+
"it",
45+
"expect"
46+
]
3447
}
3548
]
3649
},
@@ -41,31 +54,39 @@
4154
"jest --findRelatedTests",
4255
"git add"
4356
],
44-
"**/*.md": ["prettier", "markdownlint", "git add"],
45-
".github/CONTRIBUTING.md": ["doctoc", "prettier", "git add"]
57+
"**/*.md": [
58+
"prettier",
59+
"markdownlint",
60+
"git add"
61+
],
62+
".github/CONTRIBUTING.md": [
63+
"doctoc",
64+
"prettier",
65+
"git add"
66+
]
4667
},
4768
"dependencies": {
48-
"babel-plugin-emotion": "^9.2.6",
49-
"date-fns": "^1.29.0",
50-
"emotion": "^9.2.6",
51-
"emotion-server": "^9.2.6",
52-
"get-port": "^4.0.0",
53-
"grid-styled": "^5.0.2",
54-
"isomorphic-unfetch": "2.1.0",
55-
"lodash.take": "^4.1.1",
56-
"marked": "^0.4.0",
57-
"next": "^6.1.1",
58-
"nprogress": "^0.2.0",
69+
"babel-plugin-emotion": "9.2.6",
70+
"date-fns": "1.29.0",
71+
"emotion": "9.2.6",
72+
"emotion-server": "9.2.6",
73+
"get-port": "4.0.0",
74+
"grid-styled": "5.0.2",
75+
"isomorphic-unfetch": "2.1.1",
76+
"lodash.take": "4.1.1",
77+
"marked": "0.4.0",
78+
"next": "6.1.1",
79+
"nprogress": "0.2.0",
5980
"path-match": "1.2.4",
60-
"prop-types": "^15.6.2",
61-
"react": "^16.4.1",
62-
"react-content-loader": "^3.1.2",
63-
"react-dom": "^16.4.1",
64-
"react-emotion": "^9.2.6",
65-
"react-event-timeline": "^1.5.4",
66-
"react-headroom": "^2.1.6",
67-
"react-icons": "^2.2.5",
68-
"styled-system": "^3.0.2"
81+
"prop-types": "15.6.2",
82+
"react": "16.4.2",
83+
"react-content-loader": "3.1.2",
84+
"react-dom": "16.4.2",
85+
"react-emotion": "9.2.6",
86+
"react-event-timeline": "1.5.4",
87+
"react-headroom": "2.2.2",
88+
"react-icons": "2.2.7",
89+
"styled-system": "3.0.2"
6990
},
7091
"devDependencies": {
7192
"all-contributors-cli": "5.3.0",
@@ -79,14 +100,14 @@
79100
"eslint-config-prettier": "2.9.0",
80101
"eslint-plugin-react": "7.10.0",
81102
"husky": "0.14.3",
82-
"jest": "23.4.1",
103+
"jest": "23.4.2",
83104
"lint-staged": "7.2.0",
84-
"markdownlint-cli": "0.11.0",
105+
"markdownlint-cli": "0.12.0",
85106
"opn": "5.3.0",
86-
"prettier": "1.13.7",
107+
"prettier": "1.14.0",
87108
"raf": "3.4.0",
88-
"react-test-renderer": "16.4.1",
89-
"typescript": "2.9.2",
109+
"react-test-renderer": "16.4.2",
110+
"typescript": "3.0.1",
90111
"typescript-styled-plugin": "0.10.0",
91112
"webpack-bundle-analyzer": "2.13.1",
92113
"xo": "0.21.1"

pages/privacy.js

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
import React from 'react';
2+
import { Box } from 'grid-styled/emotion';
3+
4+
import Layout from '../components/common/layout';
5+
import BannerSection from '../components/common/banner';
6+
import { Container } from '../utils/base.styles';
7+
8+
const Privacy = () => (
9+
<Layout>
10+
<BannerSection
11+
title="Privacy Policy of Coderplex Foundation"
12+
subTitle="Coderplex Foundation operates the https://coderplex.org website, which provides the SERVICE."
13+
/>
14+
<Box pb={4} px={3}>
15+
<Container>
16+
<h2>Welcome to Coderplex Foundation</h2>
17+
<p>Last Revised: 31st July, 2018</p>
18+
<p>
19+
This page is used to inform website visitors regarding our policies with the collection, use, and disclosure
20+
of Personal Information if anyone decided to use our Service, the Coderplex website.
21+
</p>
22+
23+
<p>
24+
If you choose to use our Service, then you agree to the collection and use of information in relation with
25+
this policy. The Personal Information that we collect is used for providing and improving the Service. We will
26+
not use or share your information with anyone except as described in this Privacy Policy.
27+
</p>
28+
29+
<p>
30+
The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is
31+
accessible at{' '}
32+
<a rel="noopener noreferrer" href="https://coderplex.org" target="_blank">
33+
https://coderplex.org
34+
</a>{' '}
35+
unless otherwise defined in this Privacy Policy.
36+
</p>
37+
38+
<h2>Information Collection and Use</h2>
39+
40+
<p>
41+
For a better experience while using our Service, we may require you to provide us with certain personally
42+
identifiable information, including but not limited to your name, phone number, and email address. The
43+
information that we collect will be used to contact or identify you.
44+
</p>
45+
46+
<h2>Log Data</h2>
47+
48+
<p>
49+
We want to inform you that whenever you visit our Service, we collect information that your browser sends to
50+
us that is called Log Data. This Log Data may include information such as your computer's Internet Protocol
51+
("IP") address, browser version, pages of our Service that you visit, the time and date of your visit, the
52+
time spent on those pages, and other statistics.
53+
</p>
54+
55+
<h2>Cookies</h2>
56+
57+
<p>
58+
Cookies are files with small amount of data that is commonly used an anonymous unique identifier. These are
59+
sent to your browser from the website that you visit and are stored on your computer's hard drive.
60+
</p>
61+
62+
<p>
63+
Our website uses these "cookies" to collect information and to improve our Service. You have the option to
64+
either accept or refuse these cookies and know when a cookie is being sent to your computer. If you choose to
65+
refuse our cookies, you may not be able to use some portions of our Service.
66+
</p>
67+
68+
<h2>Service Providers</h2>
69+
70+
<p>We may employ third-party companies and individuals due to the following reasons:</p>
71+
72+
<ul>
73+
<li>To facilitate our Service;</li>
74+
<li>To provide the Service on our behalf;</li>
75+
<li>To perform Service-related services; or</li>
76+
<li>To assist us in analyzing how our Service is used.</li>
77+
</ul>
78+
79+
<p>
80+
We want to inform our Service users that these third parties have access to your Personal Information. The
81+
reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or
82+
use the information for any other purpose.
83+
</p>
84+
85+
<h2>Security</h2>
86+
87+
<p>
88+
We value your trust in providing us your Personal Information, thus we are striving to use commercially
89+
acceptable means of protecting it. But remember that no method of transmission over the internet, or method of
90+
electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security.
91+
</p>
92+
93+
<h2>Links to Other Sites</h2>
94+
95+
<p>
96+
Our Service may contain links to other sites. If you click on a third-party link, you will be directed to that
97+
site. Note that these external sites are not operated by us. Therefore, we strongly advise you to review the
98+
Privacy Policy of these websites. We have no control over and assume no responsibility for the content,
99+
privacy policies, or practices of any third-party sites or services.
100+
</p>
101+
102+
<h2>Children's Privacy</h2>
103+
104+
<p>
105+
Our Services do not address anyone under the age of 13. We do not knowingly collect personally identifiable
106+
information from children under 13. In the case we discover that a child under 13 has provided us with
107+
personal information, we immediately delete this from our servers. If you are a parent or guardian and you are
108+
aware that your child has provided us with personal information, please contact us so that we will be able to
109+
do necessary actions.
110+
</p>
111+
112+
<h2>Changes to This Privacy Policy</h2>
113+
114+
<p>
115+
We may update our Privacy Policy from time to time. Thus, we advise you to review this page periodically for
116+
any changes. We will notify you of any changes by posting the new Privacy Policy on this page. These changes
117+
are effective immediately after they are posted on this page.{' '}
118+
<a rel="noopener noreferrer" href="https://gdprprivacypolicy.net">
119+
This privacy policy was created with the GDPR Generator
120+
</a>.
121+
</p>
122+
123+
<h2>Contact Us</h2>
124+
125+
<p>
126+
<em>
127+
If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact us at{' '}
128+
<a href="mailto:pr@coderplex" title="send an email to [email protected]">
129+
pr@coderplex
130+
</a>
131+
.
132+
</em>
133+
</p>
134+
</Container>
135+
</Box>
136+
</Layout>
137+
);
138+
139+
export default Privacy;

0 commit comments

Comments
 (0)