From 64d70efcf38bf77ef250ca253e91a96ebc0c4b21 Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Mon, 15 Aug 2022 22:33:17 -0700 Subject: [PATCH] Static pages: About, FAQ, TOS, Privacy --- pkg/controller/index/static.go | 49 +++++ pkg/models/user.go | 9 + pkg/router/router.go | 4 + web/static/img/noah.jpg | Bin 0 -> 19133 bytes web/templates/about.html | 133 ++++++++++++ web/templates/account/block_list.html | 2 +- web/templates/account/profile.html | 6 +- web/templates/account/search.html | 2 +- web/templates/admin/certification.html | 2 +- web/templates/admin/user_actions.html | 2 +- web/templates/base.html | 8 +- web/templates/faq.html | 101 +++++++++ web/templates/friend/friends.html | 2 +- web/templates/inbox/compose.html | 2 +- web/templates/inbox/inbox.html | 4 +- web/templates/privacy.html | 214 ++++++++++++++++++ web/templates/tos.html | 290 +++++++++++++++++++++++++ 17 files changed, 815 insertions(+), 15 deletions(-) create mode 100644 pkg/controller/index/static.go create mode 100644 web/static/img/noah.jpg create mode 100644 web/templates/about.html create mode 100644 web/templates/faq.html create mode 100644 web/templates/privacy.html create mode 100644 web/templates/tos.html diff --git a/pkg/controller/index/static.go b/pkg/controller/index/static.go new file mode 100644 index 0000000..56a1660 --- /dev/null +++ b/pkg/controller/index/static.go @@ -0,0 +1,49 @@ +package index + +import ( + "net/http" + + "git.kirsle.net/apps/gosocial/pkg/templates" +) + +// Static pages. + +func About() http.HandlerFunc { + tmpl := templates.Must("about.html") + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if err := tmpl.Execute(w, r, nil); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + }) +} + +func FAQ() http.HandlerFunc { + tmpl := templates.Must("faq.html") + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if err := tmpl.Execute(w, r, nil); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + }) +} + +func TOS() http.HandlerFunc { + tmpl := templates.Must("tos.html") + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if err := tmpl.Execute(w, r, nil); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + }) +} + +func Privacy() http.HandlerFunc { + tmpl := templates.Must("privacy.html") + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if err := tmpl.Execute(w, r, nil); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + }) +} diff --git a/pkg/models/user.go b/pkg/models/user.go index f9c8e45..147a82a 100644 --- a/pkg/models/user.go +++ b/pkg/models/user.go @@ -255,6 +255,15 @@ func (um UserMap) Get(id uint64) *User { return nil } +// NameOrUsername returns the name (if not null or empty) or the username. +func (u *User) NameOrUsername() string { + if u.Name != nil && len(*u.Name) > 0 { + return *u.Name + } else { + return u.Username + } +} + // HashPassword sets the user's hashed (bcrypt) password. func (u *User) HashPassword(password string) error { passwd, err := bcrypt.GenerateFromPassword([]byte(password), config.BcryptCost) diff --git a/pkg/router/router.go b/pkg/router/router.go index c4f8d48..29cd614 100644 --- a/pkg/router/router.go +++ b/pkg/router/router.go @@ -21,6 +21,10 @@ func New() http.Handler { // Register controller endpoints. mux.HandleFunc("/", index.Create()) + mux.HandleFunc("/about", index.About()) + mux.HandleFunc("/faq", index.FAQ()) + mux.HandleFunc("/tos", index.TOS()) + mux.HandleFunc("/privacy", index.Privacy()) mux.HandleFunc("/login", account.Login()) mux.HandleFunc("/logout", account.Logout()) mux.HandleFunc("/signup", account.Signup()) diff --git a/web/static/img/noah.jpg b/web/static/img/noah.jpg new file mode 100644 index 0000000000000000000000000000000000000000..626e87afaddfe01c76f826684cf7ef00aeaccaee GIT binary patch literal 19133 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 literal 0 HcmV?d00001 diff --git a/web/templates/about.html b/web/templates/about.html new file mode 100644 index 0000000..efef875 --- /dev/null +++ b/web/templates/about.html @@ -0,0 +1,133 @@ +{{define "title"}}About{{end}} +{{define "content"}} +
+
+
+
+

About {{PrettyTitle}}

+
+
+
+
+ +
+
+

+ {{PrettyTitle}} is a social network for real nudists and exhibitionists. +

+ +

+ This website was designed by a life-long nudist, exhibitionist and software engineer to create + a safe space for like-minded individuals online, especially in the context of the modern Internet + after Tumblr, Pornhub and other social networks had begun clamping down and kicking off all the + nudists from their platforms. +

+ +

Why was this site built?

+ +

+ This site was developed as a response to growing uncertainty as to the future of available + social networking sites for nudists and exhibitionists to use. Back in 2018, Tumblr was put + under pressure and they banned all NSFW users from their platform. In 2020, Pornhub also fell victim + and deleted 80% of all user content on their site. In 2021, Onlyfans almost fell victim to the same scheme: + there is a group of anti-porn prudes who are systemically combing across the Internet and + trying to get the very concept of porn and nudity banned from online. +

+ +

+ Alongside that story, there is growing uncertainty in general about the future of free + speech and "safe harbor laws" for social network service providers online. Depending on + how it shakes out, it may become risky for sites such as Twitter and Reddit to remain + online if the service providers become liable for content uploaded by their users. It seems + likely that one day Twitter and Reddit will chase NSFW users away like Tumblr did and it may + be risky for any new startups to fill that void (Onlyfans and most adult sites have switched + to requiring photo ID to verify your accounts!) +

+ +

+ When a site has random unverified users able to post random content, + you end up with some awful things being posted - which traumatizes site moderators and + provides hooks for the anti-porn brigade that took down Tumblr to come for your site + as well. This website was designed for this modern environment, and intends to keep on + top of things from day one. +

+ +

What makes this site different?

+ +

+ In the context of the modern Internet we live in, this site does things a bit differently: +

+ +
    +
  • + Only real people may join this site. No faceless, anonymous + throw-away profiles. Everyone needs a face picture on their profile and to + submit a "verification selfie" holding a sheet of paper to prove their picture + is them. You don't need to have your face and nude body together in a picture, + but a face pic as your default profile picture is mandatory. +
  • +
  • + Only self pictures are allowed. You must be featured in a + picture to post it. No "porn blogs" of random content you found online! +
  • +
  • + Unlike some other nudist websites, exhibitionist content is + permitted here. You are allowed to post erections, hole pics, masturbation or + sexual content (within reason - nothing illegal or grossly offensive). We only + ask that you tag your photo as explicit so that nudists who + don't want to see that stuff can filter it away. This site is "nudist friendly" + by default -- opt-in to see explicit content if you like that stuff! +
  • +
+ +

Who is this site for?

+ +

+ This site is for confident, out & proud nudists and exhibitionists who aren't + afraid to include a face pic along with their nudes. If you're posting nudes on + Twitter, Reddit or Onlyfans, you're probably our kind of people. + You don't need to post nudes that include your face! Many nudists + are not comfortable with that online. But you do need at least a regular face selfie + as your default profile pic! +

+ +

Who runs this site?

+ +

+ This website is run by one very passionate software engineer. +

+ +

+ If this site brings on more moderators in the future as needs arise, the brief + profiles of everybody involved with running this site will be shown below. +

+ +

+ Questions? Contact me. +

+
+ +
+
+
+
+
+
+ +
+
+
+

Noah the introvert

+

+ + Founder & developer +

+
+
+
+
+
+ + +
+{{end}} \ No newline at end of file diff --git a/web/templates/account/block_list.html b/web/templates/account/block_list.html index e73dc51..2675369 100644 --- a/web/templates/account/block_list.html +++ b/web/templates/account/block_list.html @@ -60,7 +60,7 @@
-

{{or .Name "(no name)"}}

+

{{.NameOrUsername}}

{{.Username}} diff --git a/web/templates/account/profile.html b/web/templates/account/profile.html index c4127a8..bc11020 100644 --- a/web/templates/account/profile.html +++ b/web/templates/account/profile.html @@ -28,11 +28,7 @@

- {{if .User.Name}} - {{.User.Name}} - {{else}} - {{.User.Username}} - {{end}} + {{.User.NameOrUsername}}

{{if ne .User.Status "active"}}

diff --git a/web/templates/account/search.html b/web/templates/account/search.html index 8db1176..4c1bea6 100644 --- a/web/templates/account/search.html +++ b/web/templates/account/search.html @@ -183,7 +183,7 @@

- {{or .Name "(no name)"}} + {{.NameOrUsername}}

diff --git a/web/templates/admin/certification.html b/web/templates/admin/certification.html index 34efb7e..4588bd5 100644 --- a/web/templates/admin/certification.html +++ b/web/templates/admin/certification.html @@ -108,7 +108,7 @@

-

{{or $User.Name "(no name)"}}

+

{{.NameOrUsername}}

{{$User.Username}} diff --git a/web/templates/admin/user_actions.html b/web/templates/admin/user_actions.html index dea1118..0961aec 100644 --- a/web/templates/admin/user_actions.html +++ b/web/templates/admin/user_actions.html @@ -47,7 +47,7 @@

-

{{or .User.Name "(no name)"}}

+

{{.NameOrUsername}}

{{.User.Username}} diff --git a/web/templates/base.html b/web/templates/base.html index 60928e7..4030a71 100644 --- a/web/templates/base.html +++ b/web/templates/base.html @@ -35,6 +35,10 @@ About + + + FAQ + {{end}} {{if .LoggedIn}} @@ -48,10 +52,10 @@ Gallery - + diff --git a/web/templates/faq.html b/web/templates/faq.html new file mode 100644 index 0000000..a43f04e --- /dev/null +++ b/web/templates/faq.html @@ -0,0 +1,101 @@ +{{define "title"}}Frequently Asked Questions{{end}} +{{define "content"}} +

+ +
+
+

General FAQs

+ +

What does certification mean, and what is a "verification selfie"?

+ +

+ This website requires all members to be "certified" or proven to be real human beings + on the other side of the keyboard. A "verification selfie" is where you take a picture + of yourself holding onto a hand-written note on a sheet of paper to prove that you are + a real person (and not just catfishing with somebody else's stolen photos). +

+ +

+ Certification helps protect our members from harassment by anonymous trolls or automated + spam robots that plague other similar sites. +

+ +

Do I need to send a "verification selfie"?

+ +

+ Yes. +

+ +

+ Certification is required before you can gain access to the greater community on this + website. Pre-certification, you may only access your own profile page and settings, but + can not browse the member list, see the site Photo Gallery, or participate on the forums + until your profile has been certified. +

+ +

Photo FAQs

+ +

Do I have to post my nudes here?

+ +

+ You must be comfortable with doing so, yes. On some other nudist social websites, many + nudists have lamented to me about how often they get messages by anonymous, faceless + profiles who slide into their DMs and get all pervy and weird on them. While + {{PrettyTitle}} only requires a face pic and verification selfie, other members will + feel more comfortable if you post some of your own nudes as well. +

+ +

Do I have to include my face in my nudes?

+ +

+ You don't have to! I know many nudists are not comfortable with their face appearing + in their nudes. You are free to post "headless torso shots" or leave your face + covered or censored. But you should have at least one face pic (as your default profile + pic) - it can be a G-rated selfie! +

+ +

+ If you're only comfortable with posting like close-up dick pics, please mark those pics + as "explicit" -- many nudists prefer to see the whole nude body and don't + want to see just dick pics everywhere. And don't set those as your default profile pic! +

+ +

What is considered "explicit" in photos?

+ +

+ On this website, I make a fairly common distinction between what's a "normal nude" and + what's an "explicit" photo: +

+ +
    +
  • + "Normal nudes" are completely non-sexual in nature. If there's a penis, it's not + erect and it's not being grabbed. "Normal nudes" are not close-up pictures that + focus on the genitals, but tend to be full body shots of a non-sexual nature. +
  • +
  • + "Explicit" posts are everything else: if it includes an erection, or you're + grabbing your junk, or flashing your various holes, or masturbating or engaging + in a sexual activity, these all fall under the "explicit" umbrella. If one would + reasonably consider it to be porn, it's explicit. +
  • +
+ +

+ You are permitted to upload explicit content to your profile, just mark which pictures + are explicit to help the rest of the community in case someone prefers not to see that. + You can enable a setting on your profile if you are comfortable with seeing explicit + content from other users -- by default this site is "normal nudes" friendly! +

+
+
+{{end}} \ No newline at end of file diff --git a/web/templates/friend/friends.html b/web/templates/friend/friends.html index 4ecdc0e..11c4797 100644 --- a/web/templates/friend/friends.html +++ b/web/templates/friend/friends.html @@ -80,7 +80,7 @@
-

{{or .Name "(no name)"}}

+

{{.NameOrUsername}}

{{.Username}} diff --git a/web/templates/inbox/compose.html b/web/templates/inbox/compose.html index 5f199ca..38e64b4 100644 --- a/web/templates/inbox/compose.html +++ b/web/templates/inbox/compose.html @@ -35,7 +35,7 @@

-

{{or .User.Name "(no name)"}}

+

{{.NameOrUsername}}

{{.User.Username}} diff --git a/web/templates/inbox/inbox.html b/web/templates/inbox/inbox.html index a4b15c8..6503c04 100644 --- a/web/templates/inbox/inbox.html +++ b/web/templates/inbox/inbox.html @@ -5,7 +5,7 @@

Messages

-

Inbox

+

{{if .IsSentBox}}Sent{{else}}Inbox{{end}}

@@ -51,7 +51,7 @@
-

{{or $SourceUser.Name "(no name)"}}

+

{{$SourceUser.NameOrUsername}}

{{$SourceUser.Username}} diff --git a/web/templates/privacy.html b/web/templates/privacy.html new file mode 100644 index 0000000..c302852 --- /dev/null +++ b/web/templates/privacy.html @@ -0,0 +1,214 @@ +{{define "title"}}Privacy Policy{{end}} +{{define "content"}} +

+
+
+
+

Privacy Policy

+
+
+
+
+ +
+
+

+ This page describes the treatment of your data and privacy-related aspects of this website. +

+ +

+ We reserve the right to update this page in the future. Here at {{PrettyTitle}} we are + committed to respecting user privacy and are morally opposed to all of the shady tracking + and selling of user data that goes on with other websites. We will not sell your information + (including your e-mail address) and any kind of analytics software that may be added in the + future will be "self-hosted" with your data never leaving our servers. +

+ +

+ This page was last updated on August 15, 2022. +

+ +

+ + Any use of the word "we" on this page refers to the royal we; as this website is + actually run by just one very passionate software engineer. + +

+ +

Website Privacy Features

+ +

+ Members of this website have the following features available in their settings to control + their privacy from other members of the site: +

+ +
    +
  • + Profile photos have visibility settings including Public, Friends-only or Private: +
      +
    • + Public photos will appear on your profile page to any logged-in + member of the website, except for members who you have blocked. +
    • +
    • + Friends-only photos will only appear to members who you have + accepted a friend request from, or members who have accepted a friend request + that was sent by you ("friends"). +
    • +
    • + Private photos are visible only to yourself and any members + for whom you have unlocked your private photos. You may also revoke access to + your private photos after you had granted a member access. +
    • +
    +
  • +
+ +

Site-Wide Photo Gallery

+ +

+ One of the features of the website is the "Site Gallery" which features public + photos of all members who have opted those photos to appear in the Gallery. +

+ +

+ When you are uploading or editing a photo, there is a checkbox labeled "Gallery" where you + can opt your photo in (or out) of the Site Gallery. Only public photos will + ever appear on the Site Gallery (never private or friends-only photos). You are also able to + exclude a public photo from the Site Gallery by unchecking the "Gallery" box on that + photo. +

+ +

Deletion of User Data

+ +

+ When you delete your data (including photos) from this website, it will really + be deleted. This website is currently run as a "passion project" on the owner's own budget and + web hosting costs can get expensive when a website grows popular! So your deleted photos are + actually removed from the server hard drive. You can verify this for yourself by + right-clicking and "Open image in a new tab" in your browser, delete it, and refresh the other + tab and see that the image URL no longer exists! +

+ +

+ Members are free to delete their accounts and your data will be + scrubbed from the server: your photos deleted and all database records about your + account (including your profile data, direct messages, forum posts, comments, and so on) are + removed. This is for full compliance with privacy regulations such as GDPR and CCPA. +

+ +

Moderators

+ +

+ To help enforce community standards, website administrators are able to access ANY user photo. + Specifically, this will include the following photos: +

+ +
    +
  • All photos uploaded to your Profile Page, including private and friends-only photos.
  • +
  • Any photo uploaded onto the Forums.
  • +
+ +

+ The contents of your Direct Messages are NOT regularly reviewed by site administrators. Your + privacy is respected in one-on-one chats with others. However, if a user reports your message + for violating the Terms of Use the messages may be reviewed by an + administrator to verify the report and take action as needed. +

+ +

Email Addresses

+ +

+ All members begin signup by verifying control of an e-mail inbox. On this website, your e-mail + address is used for the following purposes: +

+ +
    +
  • For logging in to your account (as an alternative to logging in using your username).
  • +
  • To deliver e-mail notifications or to get in touch with you if necessary (see below).
  • +
+ +

+ We will NOT sell your e-mail address or send you any spam or junk mail + and will NEVER do so in the future. +

+ +

What kinds of e-mail messages we send

+ +

+ Currently the website only sends transactional e-mails (not marketing emails!) + in response to important actions on the website, including (exhaustively): +

+ +
    +
  • + Upon first sign-up we send an e-mail to verify you control the email address you are + signing up with. This message contains a link to click to verify you control that + e-mail inbox and resume signing up an account on this website. +
  • +
  • + If you have forgotten your password and request a password reset via e-mail, we will + send you a message to your e-mail inbox with a link to click to set a new password + for your account. +
  • +
  • + If you change your e-mail address in your settings, a message will be sent to the + new e-mail address to verify you control the new address. +
  • +
  • + When your Certification Photo is either approved or rejected by a site administrator, + you will receive a notification message to your e-mail inbox. +
  • +
+ +

+ In the future, the website MAY gain a feature to deliver a "daily digest" e-mail if you + have any pending friend requests or unread Direct Messages on this site. There will be + controls on your Settings page to control such a feature. +

+ +

Cookies

+ +

+ This website uses functional cookies only and does not run any advertisements + or third-party trackers. The exhaustive list of website cookies and their use cases are as + follows: +

+ +
    +
  • + A session ID cookie to remember your login status as you browse the + website. This cookie holds a randomly generated unique value that corresponds to + server-side storage about the details of your login status. The server-side details + include, exhaustively: your login status (true/false), your user ID number, any temporary + "flashed" success or error messages (which appear at the tops of pages in green or red + banners on your next page load), and a "last seen" time stamp. +
  • +
  • + A cookie to protect against a cross site request forgery + (CSRF) type + of cyber attack. This cookie holds a randomly generated unique value that helps protect + you from a rogue third-party website attempting to perform actions on behalf of your + account on this website. +
  • +
+ +

Analytics Software

+ +

+ In the future we MAY deploy self-hosted analytics software to help understand how the + website is being used and identify any pain points that users may be running into. This + would probably be Matomo analytics, + a free and open source program that would run on the same web servers as this website, + so that analytics data does NOT leave this site and go to a third party such as Google + or Facebook. +

+ +

+ The author of this website is a privacy & security nut and he respects your + privacy as well. Matomo Analytics is GDPR compliant, automatically respects your web + browser's "Do Not Track" header and can be opted out of. +

+
+
+{{end}} \ No newline at end of file diff --git a/web/templates/tos.html b/web/templates/tos.html new file mode 100644 index 0000000..08ec731 --- /dev/null +++ b/web/templates/tos.html @@ -0,0 +1,290 @@ +{{define "title"}}Terms of Service{{end}} +{{define "content"}} +
+
+
+
+

Terms of Service

+
+
+
+
+ +
+
+

+ This page lays down the ground rules for this site. By signing up and using this + website, you agree to follow the rules listed below. Failure to abide by the rules + may result in your pictures or messages being deleted, or your user account as a + whole being deleted or banned from the service. Egregious violations, e.g. posting + blatantly illegal content will result in a swift ban (and be reported to the relevant + law enforcement agency, if applicable). For minor community guideline + offenses, you may be contacted by a site administrator to help address the issue. +

+ +

+ The website administrator reserves the right to modify these terms in the future. + This document was last updated on August 15, 2022. +

+ +

+ If you have found content on this site that you believe to be in violation of the + rules, please report it at TBD or e-mail + abuse@nonshy.com. +

+ +

+ + Any use of the word "we" on this page refers to the royal we; as this website is + actually run by just one very passionate software engineer. + +

+ +

Summary

+ +
    +
  • + You must be 18+ years old to sign up for this website. +
  • +
  • + Real People Only! This website is for real people who are not + afraid to show their face. You do not need to post a nude that includes your + face, but a face pic is required. +
  • +
  • + Verification is required. All members must submit a "verification + selfie" that proves they're a real person. No faceless, anonymous profiles! +
  • +
  • + Self photos only: all pictures uploaded to your profile page + must contain YOU in them. This rule does not apply to forums which may have + their own themes. +
  • +
  • + Sex-positive "Explicit" photos are permitted but must be marked as such so + that members who do not want to see them don't have to. +
  • +
  • + Don't do anything illegal according to the law in the United States + where this web server resides. +
  • +
  • + Be excellent to each other. +
  • +
+ +

+ Please review the rest of this page for more in-depth explanations about this site's + rules and code of conduct. +

+ +

General Code of Conduct

+ +

+ This section applies generally across every corner of this website, including but + not limited to: the text you write on your profile page, the messages you send to + other members, the comments you leave on their photos, and the messages you post + in the forums. +

+ +

Real People Only!

+ +

+ This website is for real nudists and exhibitionists who are not + afraid to show their face and verify themselves as being a real person. +

+ +

+ You do NOT need to include your face and nude body in a picture together; but a + picture of your face must be somewhere on your profile page, including as your + default profile picture. +

+ +

+ The following are the bare minimum requirements for members of + this website: +

+ +
    +
  • You must have a face picture as your default profile photo.
  • +
  • + You must upload a "verification selfie" which includes your + face and depicts you holding a hand-written note on paper to verify that + you're a real person. +
  • +
+ +

+ Your verification photo will only be seen by site administrators and will not + appear on your profile page. +

+ +

+ Having a nude pic on your profile is optional, but encouraged. You are on a nudist + website after all, and other members will feel more comfortable if you join in! +

+ +

Hateful Content & Bullying

+ +

+ This website will NOT tolerate hateful content against any minority group, including + but not limited to: racism, homophobia, transphobia, sexism, xenophobia, antisemitism, + body shaming, sex shaming, or generally being mean to people (or writing mean things + about people) on matters of their age, sex, gender, gender identity, sexual orientation, + religion, color of their skin, racial or ethnic background, shape of their body, or + other such characteristics. +

+ +

+ Members caught engaging in such behaviors will be removed from the community. +

+ +

Acceptable Photo Policy

+ +

All photos uploaded to your profile page must contain YOU in them

+ +

+ Your profile page is about you and all photos you upload to it must be + pictures of you. +

+ +

+ If your pictures also include other people, please be sure that you have the + consent of all pictured individuals to upload it to your profile page. +

+ +

+ You do not have to include your face in all your pictures! Many nudists are not + comfortable showing their face in their nudes and will post "torso shots" or + censor their face -- that's OK! You only need one face picture to use as your + default profile pic - it can be a clothed, G-rated selfie! +

+ +

Normal Nudes & Non-Explicit Content

+ +

+ This is a website for nudists and so "normal nudes" are expected and are the default. + Not all nudists want to see sexually explicit material. You MAY upload sexually + explicit content but you are expected to mark such photos as "Explicit" so that + nudists who don't want to see them can filter them out (which is the default setting). +

+ +

+ You do not need to tag your photo as "Explicit" for simply containing non-sexual nudity. + Examples of "normal nudes" and non-sexual nudity include, but are not limited to: +

+ +
    +
  • Full body nude photos where the focus of the picture is NOT on the genitalia.
  • +
  • A flaccid (non-erect) penis, provided it is NOT the focus of the picture.
  • +
  • + Photos taken at nude beaches, nude campgrounds, or other nudist events in + a non-sexual context. +
  • +
  • + Photos of nude gardening or other activities done in the buff. +
  • +
  • + Butt pics are OK: full body nudes taken from behind that show your butt are + considered "normal nudes" unless your butt is the sole focus of the picture. +
  • +
+ +

+ Basically, as long as the photo doesn't fall under the "Explicit Photos & Sexual Content" + examples listed below, you do not need to tag your picture as "Explicit." +

+ +

Explicit Photos & Sexual Content

+ +

+ Explicit photos and sexual content ("exhibitionist photos") are permitted on this website + but you agree to tag such photos as "Explicit" in their settings + when you upload them. +

+ +

+ A photo is considered "explicit" if it depicts any of the following features: +

+ +
    +
  • + A close-up view of genitalia or where the genitals are the central focus of the picture. +
  • +
  • An erect penis if the subject has one, especially if they are grabbing it.
  • +
  • + "Spread eagle" pictures that clearly and especially show intimate body parts such + as butt holes or vulvae. +
  • +
  • + A depiction of a sexual act, including but not limited to: masturbation, oral sex, + anal or vaginal penetration, humping, or any content intended to sexually arouse the + viewer. If it can be reasonably considered to be "porn" it is an explicit photo. +
  • +
  • + Usage of a sex toy or sexual device, including but not limited to: dildos, fleshlights + or fleshjacks, "pocket pussies," or things of that nature. Exceptions: + certain mild lifestyle devices such as cock rings or chastity cages may be OK (and not + require tagging as "Explicit") if the rest of the photo is framed in a non-sexual context. +
  • +
+ +

Prohibited Content

+ +

+ Even in the context of "Explicit Photos," the following sorts of content is + strictly prohibited: +

+ +
    +
  • + You may NOT upload any content that is considered to be illegal in the United States or + in any of the 50 States therein. This includes, but is not limited to: bestiality (or + sexual acts involving animals), child sexually abusive material (CSAM), ANY nude photo + depicting a minor person under the age of 18, ANY depictions or fantasies involving rape or + sexual violence, ANY nude or sexual content of another person uploaded without their + consent ("revenge porn"), ANY depiction of violence or graphical gore (sexual or otherwise), + or other unlawful content. +
  • +
  • + You may NOT upload sexual material depicting extreme or commonly offensive content + including, but not limited to: watersports (peeing onto or into another person), scat + (any depiction of obviously apparent fecal matter), prolapsed rectum, anal fisting, + blood play, or other such content that an average person would consider to be shocking + or revolting. +
  • +
+ +

NO pictures of children, period!

+ +

+ This is an adult website and all people depicted on it MUST be of legal age (18 years or + older). Do not upload any picture that includes a minor -- clothed or otherwise. +

+ +

Service Level Agreement

+ +
    +
  • + We can not guarantee that service will be uninterrupted, error-free or completely + secure. You acknowledge that there are risks inherent in Internet connectivity that + could result in the loss of your privacy, Confidential Information and property. +
  • +
  • + We can not guarantee that your content (messages, profile data, photos or forum + posts) will be safe from data loss or catastrophic failure of our service, and + request that you keep your own backups of anything important or sentimental. +
  • +
+ +

Site Criticism and Feature Requests

+ +

+ We always appreciate your ideas and criticisms about features for this website. Should + we implement a feature that you have requested, we are under no obligation to compensate + you monetarily for the idea just as you are under no obligation to suggest your ideas. +

+ +
+
+{{end}} \ No newline at end of file