mirror of
https://github.com/httpjamesm/AnonymousOverflow.git
synced 2024-12-06 19:16:43 +01:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3aac1467cd | |||
| 062ffbcbdc | |||
| aa13c8515f | |||
| d49c0f2ffd | |||
| 89d8dee958 | |||
| 0ad3f08ef5 | |||
| d5bcf7fa38 |
@@ -19,6 +19,7 @@ This project is super lightweight by design. The UI is simple and the frontend i
|
||||
| [code.whatever.social](https://code.whatever.social) | United States & Germany | Operated by [Whatever Social](https://whatever.social) and [http.james](https://httpjames.space) |
|
||||
| [overflow.777.tf](https://overflow.777.tf/) | The Netherlands | Operated by [Jae](https://777.tf) |
|
||||
| [ao.vern.cc](https://ao.vern.cc) | United States | Operated by [vern.cc](https://vern.cc) |
|
||||
| [overflow.smnz.de](https://overflow.smnz.de) | Germany | Operated by [smnz.de](https://smnz.de) |
|
||||
|
||||
## Other Instances
|
||||
|
||||
@@ -29,7 +30,7 @@ This project is super lightweight by design. The UI is simple and the frontend i
|
||||
|
||||
## Why use AnonymousOverflow over StackOverflow?
|
||||
|
||||
- StackOverflow collects a lot of information
|
||||
- StackOverflow collects a lot of information
|
||||
|
||||
While it's understandable that StackOverflow collects a lot of technical data for product development, debugging and to serve the best experience to its users, not everyone wants their
|
||||
|
||||
@@ -37,16 +38,16 @@ While it's understandable that StackOverflow collects a lot of technical data fo
|
||||
|
||||
to be collected and stored.
|
||||
|
||||
- StackOverflow shares your information with third-parties
|
||||
- StackOverflow shares your information with third-parties
|
||||
|
||||
StackOverflow does not sell your information, but it does share it with third-parties, including conglomerates.
|
||||
|
||||
> We also partner with other third parties, such as Google Ads and Microsoft Bing, to serve advertising content and manage advertising campaigns. When we use Google Ads or Microsoft Bing Customer Match for advertising campaigns, your personal data will be protected using hashed codes.
|
||||
Google users can control the ads that they see on Google services, including Customer Match ads, in their Google Ads Settings.
|
||||
> Google users can control the ads that they see on Google services, including Customer Match ads, in their Google Ads Settings.
|
||||
|
||||
Their main website also [contains trackers from Alphabet](https://themarkup.org/blacklight?url=stackoverflow.com).
|
||||
|
||||
- Reduced clutter
|
||||
- Reduced clutter
|
||||
|
||||
StackOverflow has a cluttered UI that might distract you from the content you're trying to find. AnonymousOverflow simplifies the interface to make it easier to read and navigate.
|
||||
|
||||
@@ -86,13 +87,7 @@ Thanks to [Manav from ente.io](https://ente.io/about) for the handy tool.
|
||||
|
||||
## How to deploy
|
||||
|
||||
AnonymousOverflow uses Docker for deployment.
|
||||
|
||||
Install Docker for your platform and copy the `docker-compose.example.yml` file to `docker-compose.yml`.
|
||||
|
||||
Then, tweak settings if needed.
|
||||
|
||||
Run `docker compose up -d` to build and start the container.
|
||||
Read the [wiki page](https://github.com/httpjamesm/AnonymousOverflow/wiki/Deployment).
|
||||
|
||||
## Attribution
|
||||
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
package config
|
||||
|
||||
var Version = "1.3.4"
|
||||
var Version = "1.4"
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
.comments {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.comments-parent {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 1rem;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.comment-parent {
|
||||
cursor: text;
|
||||
}
|
||||
|
||||
.comment-top {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.comment-score {
|
||||
border-right: 1px solid white;
|
||||
padding-right: .5rem;
|
||||
}
|
||||
|
||||
.comment-body {
|
||||
font-size: 0.95rem;
|
||||
padding-left: .5rem;
|
||||
}
|
||||
|
||||
.comment-author {
|
||||
color: var(--muted-text-color);
|
||||
font-size: 0.8rem;
|
||||
padding-left: 1.5rem;
|
||||
margin-top: .25rem;
|
||||
}
|
||||
+2
-25
@@ -50,7 +50,8 @@ pre {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.post-divider, .answer-divider {
|
||||
.post-divider,
|
||||
.answer-divider {
|
||||
margin-top: 3rem;
|
||||
margin-bottom: 3rem;
|
||||
}
|
||||
@@ -102,30 +103,6 @@ img {
|
||||
height: 2rem;
|
||||
}
|
||||
|
||||
.comments {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.comments-parent {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 1rem;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.comment-parent {
|
||||
cursor: text;
|
||||
}
|
||||
|
||||
.comment-body {
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
|
||||
.comment-author {
|
||||
color: var(--muted-text-color);
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.s-notice {
|
||||
background-color: var(--meta-bg);
|
||||
padding: 1rem;
|
||||
|
||||
@@ -7,4 +7,5 @@ type FilteredComment struct {
|
||||
Timestamp string
|
||||
AuthorName string
|
||||
AuthorURL string
|
||||
Upvotes string
|
||||
}
|
||||
|
||||
@@ -17,6 +17,14 @@ func FindAndReturnComments(inHtml string, postLayout *goquery.Selection) (commen
|
||||
allComments := commentsList2.Find("li.comment")
|
||||
|
||||
allComments.Each(func(i int, s *goquery.Selection) {
|
||||
commentScoreParent := s.Find("div.comment-score")
|
||||
|
||||
// find the first span within commentScoreParent
|
||||
commentScore := commentScoreParent.Find("span").First().Text()
|
||||
if commentScore == "" {
|
||||
commentScore = "0"
|
||||
}
|
||||
|
||||
commentText := s.Find("div.comment-text")
|
||||
|
||||
commentBody := commentText.Find("div.comment-body")
|
||||
@@ -45,6 +53,7 @@ func FindAndReturnComments(inHtml string, postLayout *goquery.Selection) (commen
|
||||
Timestamp: commentTimestamp,
|
||||
AuthorName: commentAuthor.Text(),
|
||||
AuthorURL: commentAuthorURL,
|
||||
Upvotes: commentScore,
|
||||
}
|
||||
|
||||
comments = append(comments, newFilteredComment)
|
||||
|
||||
+10
-3
@@ -1,13 +1,20 @@
|
||||
<details class="comments">
|
||||
<summary>
|
||||
Show <b>{{ (len .Comments) }} comments</b>
|
||||
Show
|
||||
<b
|
||||
>{{ (len .Comments) }} comment{{ if gt (len .Comments) 1 }}s{{
|
||||
end }}</b
|
||||
>
|
||||
</summary>
|
||||
<div class="comments-parent">
|
||||
{{ range $comment := .Comments }}
|
||||
<div class="comment-parent">
|
||||
<div class="comment">
|
||||
<div class="comment-body">
|
||||
{{ $comment.Text }}
|
||||
<div class="comment-top">
|
||||
<div class="comment-score" title="Comment Upvotes">
|
||||
{{ $comment.Upvotes }}
|
||||
</div>
|
||||
<div class="comment-body">{{ $comment.Text }}</div>
|
||||
</div>
|
||||
<div class="comment-author">
|
||||
Commented {{ $comment.Timestamp }} by
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
<title>{{ .question.Title }}</title>
|
||||
<link rel="stylesheet" href="/static/question.css" />
|
||||
<link rel="stylesheet" href="/static/syntax.css" />
|
||||
<link rel="stylesheet" href="/static/comments.css" />
|
||||
<meta
|
||||
http-equiv="Content-Security-Policy"
|
||||
content="default-src 'none'; style-src 'self'; script-src 'none'; img-src {{ .imagePolicy }};"
|
||||
@@ -21,7 +22,7 @@
|
||||
alt="4 circles with alternating colors between green and white"
|
||||
/>
|
||||
</a>
|
||||
{{ template "themeSwitcher.html" .}}
|
||||
{{ template "themeSwitcher.html" . }}
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
|
||||
Reference in New Issue
Block a user