Skip to content

Commit 9794def

Browse files
author
Andrey Butov
committed
initial commit
0 parents  commit 9794def

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+1944
-0
lines changed

.gitignore

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
twitter-security.edn
2+
.idea
3+
*.iml
4+
.DS_Store
5+
target
6+
.lein-env
7+
.lein-repl-history
8+
.lein-failures
9+
.nrepl-port
10+
tech-radar/.nrepl-port
11+
figwheel_server.log
12+
resources/public/js
13+
resources/public/main.js
14+
release/main.js
15+
release/css
16+
release/vendor
17+
release/font-awesome
18+
release/images

README.md

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# tech-radar
2+
3+
## Description
4+
5+
Technology Radar is a web application which helps you to be aware about modern trends in programming.
6+
One look is worth thousand words. Just follow to http://tech-radar.github.io
7+
I prepared this project for my talk `Full stack Clojure in production`. I would appreciate any ideas and questions.
8+
9+
## How to build the app
10+
11+
1. install-env.sh contains everything you need to setup environment for tech-radar under Ubuntu server.
12+
2. build-release-all.sh builds backend and frontend applications and packs them into release.zip file.
13+
3. tech-radar.conf file contains upstart config
14+
15+
## It's not perfect... yet
16+
I had not so much time to make this project. Backend is mostly ok, but frontend is just a very early implementation. I'm going to use Om.next for frontend.
17+
18+
## License
19+
20+
Copyright (c) Andrey Butov. All rights reserved. The use and
21+
distribution terms for this software are covered by the Eclipse
22+
Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
23+
which can be found in the file epl-v10.html at the root of this
24+
distribution. By using this software in any fashion, you are
25+
agreeing to be bound by the terms of this license. You must
26+
not remove this notice, or any other, from this software.

build-release-all.sh

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#!/usr/bin/env bash
2+
3+
echo 'building backend...'
4+
export LEIN_SNAPSHOTS_IN_RELEASE=1
5+
lein do clean, uberjar
6+
cp .lein-env target/
7+
cp twitter-security.edn target/
8+
cp twitter-settings.edn target/
9+
cp classify-settings.edn target/
10+
echo 'backend was built'
11+
12+
echo 'building frontend...'
13+
14+
echo 'Cleaning assets'
15+
rm -rf release/vendor
16+
rm -rf release/css
17+
rm -rf release/font-awesome
18+
rm -rf release/images
19+
20+
echo 'Copying resources'
21+
cp -r resources/public/css release/css
22+
cp -r resources/public/vendor release/vendor
23+
cp -r resources/public/font-awesome release/font-awesome
24+
cp -r resources/public/images release/images
25+
26+
echo 'Building js app'
27+
lein cljsbuild once release
28+
echo 'tech-radar was build'
29+

classify-settings.edn

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{:topics {:clojure ["clojure" "clojurescript"]
2+
:jvm ["jvm" "java" "scala lang"]
3+
:javascript ["javascript"]
4+
:golang ["golang"]
5+
:linux ["linux"]
6+
:nosql ["nosql"]
7+
:rust ["rust lang"]
8+
:jobs ["job jobs hiring"]}
9+
:languages ["en" "ru"]
10+
:max-topics-per-tweet 4
11+
:max-hashtags-per-tweet 4}

install-env.sh

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
sudo add-apt-repository ppa:webupd8team/java -y
2+
sudo apt-get update -y
3+
sudo apt-get install language-pack-ru -y
4+
sudo apt-get install htop -y
5+
sudo apt-get install zip -y
6+
sudo apt-get install unzip -y
7+
echo debconf shared/accepted-oracle-license-v1-1 select true | \
8+
sudo debconf-set-selections
9+
echo debconf shared/accepted-oracle-license-v1-1 seen true | \
10+
sudo debconf-set-selections
11+
sudo apt-get install oracle-java8-installer -y
12+
sudo apt-get install postgresql -y
13+
su - postgres -c "psql -U postgres -d postgres -c \"alter user postgres with password 'postgres';\""
14+
sudo -i -u postgres createdb -U postgres analytics
15+
sudo apt-get install nginx -y
16+
sudo apt-get install git -y
17+
sudo wget https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein
18+
sudo chmod u+x lein
19+
sudo LEIN_ROOT=true ./lein
20+
sudo ufw default deny incoming
21+
sudo ufw default allow outcoming
22+
sudo ufw allow ssh
23+
sudo ufw allow http
24+
sudo ufw allow 3000
25+
sudo ufw enable -y

project.clj

+82
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
(defproject tech-radar "1.0.0"
2+
:description "Tech-radar backend"
3+
:url "https://github.com/abtv/tech-radar"
4+
:license {:name "Eclipse Public License"
5+
:url "http://www.eclipse.org/legal/epl-v10.html"}
6+
7+
:dependencies [[org.clojure/clojure "1.8.0"]
8+
[org.clojure/clojurescript "1.7.228"]
9+
[org.clojure/core.async "0.2.374"]
10+
[org.immutant/immutant "2.1.2"]
11+
[ring "1.4.0"]
12+
[ring/ring-defaults "0.2.0"]
13+
[compojure "1.5.0"]
14+
[liberator "0.14.1"]
15+
[bidi "2.0.4"]
16+
[com.cognitect/transit-clj "0.8.285"]
17+
[cheshire "5.5.0"]
18+
[ragtime "0.5.3"]
19+
[org.postgresql/postgresql "9.2-1002-jdbc4"]
20+
[honeysql "0.6.3"]
21+
[clj-dbcp "0.8.1"]
22+
[clj-time "0.11.0"]
23+
[com.twitter/hbc-core "2.2.1-SNAPSHOT"]
24+
[com.stuartsierra/component "0.3.1"]
25+
[reloaded.repl "0.2.1"]
26+
[environ "1.0.2"]
27+
[com.taoensso/timbre "4.3.1"]
28+
[environ "1.0.2"]
29+
[com.taoensso/timbre "4.3.1"]
30+
[camel-snake-kebab "0.3.2"]
31+
[org.omcljs/om "1.0.0-alpha31"]
32+
[sablono "0.6.2"]
33+
[cljs-ajax "0.5.4"]
34+
[figwheel-sidecar "0.5.0-6"]
35+
[com.cemerick/piggieback "0.2.1"]
36+
[secretary "1.2.3"]
37+
[cljsjs/dimple "2.1.2-0"]
38+
[com.cognitect/transit-clj "0.8.285"]]
39+
40+
41+
:source-paths ["src/cljc" "src/clj" "src/cljs"]
42+
43+
:plugins [[lein-environ "1.0.2"]
44+
[ragtime/ragtime.lein "0.3.9"]
45+
[lein-cljsbuild "1.1.3"]
46+
[lein-figwheel "0.5.0-6"]]
47+
48+
:aliases {"migrate" ["run" "-m" "tech-radar.migrations/migrate"]
49+
"rollback" ["run" "-m" "tech-radar.migrations/rollback"]}
50+
51+
:min-lein-version "2.5.0"
52+
53+
:uberjar-name "backend.jar"
54+
55+
:clean-targets ^{:protect false} ["resources/public/js/" "target/"]
56+
:repl-options {:nrepl-middleware [cemerick.piggieback/wrap-cljs-repl]
57+
:init (do (use 'figwheel-sidecar.repl-api) (start-figwheel!))}
58+
:cljsbuild {:builds {:dev {:source-paths ["src/cljs"]
59+
:figwheel {:websocket-host "localhost"}
60+
:compiler {:main tech-radar.core
61+
:asset-path "js"
62+
:output-dir "resources/public/js"}}
63+
:release {:source-paths ["src/cljs"]
64+
:compiler {:optimizations :advanced
65+
:output-to "release/main.js"}}}}
66+
67+
:profiles {:dev {:env {:host "localhost"
68+
:port 3000
69+
:database "jdbc:postgresql://localhost/analytics?user=postgres&password=postgres"
70+
:twitter-security "twitter-security.edn"
71+
:twitter-settings "twitter-settings.edn"
72+
:classify-settings "classify-settings.edn"}}
73+
:uberjar {:main tech-radar.core
74+
:aot [tech-radar.core]
75+
:global-vars {;*warn-on-reflection* true
76+
*assert* false}
77+
:env {:host "0.0.0.0"
78+
:port 3000
79+
:database "jdbc:postgresql://localhost/analytics?user=postgres&password=postgres"
80+
:twitter-security "twitter-security.edn"
81+
:twitter-settings "twitter-settings.edn"
82+
:classify-settings "classify-settings.edn"}}})

release/index.html

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head lang="en">
4+
<meta charset="utf-8">
5+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
6+
<meta name="viewport" content="width=device-width, initial-scale=1">
7+
<meta name="description" content="">
8+
<meta name="author" content="">
9+
10+
<title>Tech Radar</title>
11+
12+
<link rel="shortcut icon" href="images/favicon.png" type="image/png">
13+
<link href="images/apple-touch-icon.png" rel="apple-touch-icon">
14+
15+
<!-- Bootstrap Core CSS -->
16+
<link href="css/bootstrap.min.css" rel="stylesheet">
17+
18+
<!-- Custom CSS -->
19+
<link href="css/sb-admin.css" rel="stylesheet">
20+
21+
<!-- Custom Fonts -->
22+
<link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
23+
24+
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
25+
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
26+
<!--[if lt IE 9]>
27+
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
28+
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
29+
<![endif]-->
30+
</head>
31+
<body>
32+
<div id="app">
33+
34+
</div>
35+
36+
<!-- jQuery -->
37+
<script src="vendor/jquery.js"></script>
38+
39+
<!-- Bootstrap Core JavaScript -->
40+
<script src="vendor/bootstrap.min.js"></script>
41+
42+
<script src="http://d3js.org/d3.v3.min.js"></script>
43+
<script src="http://dimplejs.org/dist/dimple.v2.2.0.min.js"></script>
44+
45+
<script src="main.js"></script>
46+
</body>
47+
</html>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
DROP TABLE tweets;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
CREATE TABLE tweets(id SERIAL PRIMARY KEY,
2+
twitter_id varchar(30),
3+
text varchar(300),
4+
created_at timestamp,
5+
retweeted boolean,
6+
user_created_at timestamp,
7+
user_name varchar(300),
8+
user_location varchar(300),
9+
user_description varchar(300),
10+
followers_count int,
11+
friends_count int,
12+
statuses_count int,
13+
user_lang varchar(10));
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
DROP TABLE hashtags;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
CREATE TABLE hashtags(id SERIAL PRIMARY KEY,
2+
created_at timestamp,
3+
topic varchar(50),
4+
hashtag varchar(50));
5+
6+
CREATE INDEX hastags_created_topic ON hashtags (created_at DESC, topic);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
DROP TABLE topics;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
CREATE TABLE topics(id SERIAL PRIMARY KEY,
2+
tweet_id integer REFERENCES tweets (id),
3+
created_at timestamp,
4+
topic varchar(50));
5+
6+
CREATE INDEX topics_created ON topics (created_at DESC, topic);

resources/public/css/bootstrap.min.css

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)