Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
249 commits
Select commit Hold shift + click to select a range
a5c8f60
feat: modify config for heroku
vdiefn Mar 19, 2023
bd31725
modify config
vdiefn Mar 19, 2023
84d5893
Merge pull request #1 from vdiefn/feature/a
vdiefn Mar 19, 2023
2dc24c8
feat: add gitattributes
vdiefn Mar 19, 2023
418d1d3
Merge pull request #2 from vdiefn/feature/a
vdiefn Mar 20, 2023
e5410bb
feat:add particals nav & followship
chachagof Mar 20, 2023
fa21b9c
feat:add tweets page
chachagof Mar 20, 2023
1034236
Merge remote-tracking branch 'origin/master' into chacha
chachagof Mar 20, 2023
d5609b7
feat: add signin, signup page & admin signin page
vdiefn Mar 20, 2023
028b90c
Merge branch 'feature/a' of https://github.com/vdiefn/twitter-fullsta…
Shiba-Patrick Mar 20, 2023
1f5a677
Merge pull request #3 from vdiefn/feature/a
vdiefn Mar 21, 2023
64bde95
Merge branch 'master' of https://github.com/vdiefn/twitter-fullstack-…
chachagof Mar 21, 2023
fc66ef0
feat:modify app.js
chachagof Mar 21, 2023
613857e
feat: add tweets router
chachagof Mar 21, 2023
1582614
feat:add tweetcontroller
chachagof Mar 21, 2023
c41a141
feat:change index.hbs file name to tweets.hbs
chachagof Mar 21, 2023
99c92c3
Merge pull request #4 from vdiefn/chacha
vdiefn Mar 21, 2023
6896ff9
usersPage
Shiba-Patrick Mar 21, 2023
693431e
Merge branch 'master' of https://github.com/vdiefn/twitter-fullstack-…
Shiba-Patrick Mar 21, 2023
fd5b7df
userPgae update
Shiba-Patrick Mar 21, 2023
47e14cd
Merge pull request #5 from vdiefn/feature/p
chachagof Mar 21, 2023
6850805
feat: modify followship router in followship.hbs
chachagof Mar 21, 2023
8154b2f
Merge branch 'chacha'
chachagof Mar 21, 2023
2d031fc
feat: add setting page
vdiefn Mar 21, 2023
e9eeed1
feat:add tweets at admin page
vdiefn Mar 21, 2023
5f7db98
feat:
chachagof Mar 21, 2023
97b7ddc
feat: add users at admin page
vdiefn Mar 21, 2023
f99c91b
combination all page and add logout
Shiba-Patrick Mar 21, 2023
131bacb
Merge pull request #6 from vdiefn/chacha
vdiefn Mar 22, 2023
e18b31a
merge conflict
vdiefn Mar 22, 2023
cc349f3
Merge pull request #7 from vdiefn/feature/a
vdiefn Mar 22, 2023
c9878a4
Merge branch 'master' of https://github.com/vdiefn/twitter-fullstack-…
Shiba-Patrick Mar 22, 2023
c047cf1
Merge pull request #8 from vdiefn/feature/p
vdiefn Mar 22, 2023
43fb42c
feat:build model
chachagof Mar 22, 2023
dbe4a52
feat:mdoify new migration
chachagof Mar 22, 2023
e83bc13
Merge pull request #9 from vdiefn/chacha
vdiefn Mar 22, 2023
19d3b64
add bcryptjs / @faler / user-seed success
Shiba-Patrick Mar 22, 2023
59698c4
add tweets&replies seed
Shiba-Patrick Mar 23, 2023
aa41a65
see data
Shiba-Patrick Mar 23, 2023
496b270
Merge pull request #10 from vdiefn/feature/p
vdiefn Mar 23, 2023
925fb1b
feat: modify all model
chachagof Mar 23, 2023
ac79b03
feat:modify migration and seeder
chachagof Mar 23, 2023
37c3dad
seed new
Shiba-Patrick Mar 23, 2023
f0f36fe
feat:change camel ot snake case
chachagof Mar 23, 2023
158d5b4
feat:add model's associate
chachagof Mar 23, 2023
76cce6c
Merge pull request #11 from vdiefn/chacha
vdiefn Mar 23, 2023
5dfaa02
feat:add tweet page
chachagof Mar 23, 2023
ecd4678
Merge branch 'master' into feature/p
Shiba-Patrick Mar 23, 2023
e7ebbdc
Merge pull request #12 from vdiefn/feature/p
vdiefn Mar 24, 2023
7fc552c
update migration,model,seed
Shiba-Patrick Mar 24, 2023
708be4d
Merge pull request #13 from vdiefn/feature/p
vdiefn Mar 24, 2023
dc93a5c
merge master
Shiba-Patrick Mar 24, 2023
0b99ada
Merge branch 'master' into chacha
chachagof Mar 24, 2023
66d844b
setting step1 and model+migration update
Shiba-Patrick Mar 24, 2023
568c99a
Merge pull request #14 from vdiefn/feature/p
chachagof Mar 24, 2023
a957bfa
Merge branch 'master' into chacha
chachagof Mar 24, 2023
a8281cd
feat:modify tweet controller
chachagof Mar 24, 2023
e0a7f23
add getUsers at admin-controller
vdiefn Mar 24, 2023
aeb8f42
feat:modify getTweets , getTweet and add createTweet
chachagof Mar 24, 2023
b652a0d
add getTweets & deleteTweet function
vdiefn Mar 24, 2023
fc3717c
Merge pull request #15 from vdiefn/feature/a
vdiefn Mar 24, 2023
c19700e
delete unexpected variable
vdiefn Mar 24, 2023
3569234
Merge pull request #16 from vdiefn/feature/a
chachagof Mar 24, 2023
337aa75
feat:add session and connect-flash
chachagof Mar 24, 2023
f996835
Merge branch 'master' into chacha
chachagof Mar 24, 2023
183bb66
feat: add createReply
chachagof Mar 24, 2023
6601004
Merge pull request #17 from vdiefn/chacha
vdiefn Mar 25, 2023
494a192
Merge branch 'master' of https://github.com/vdiefn/twitter-fullstack-…
Shiba-Patrick Mar 25, 2023
826da30
feat:modify tweet-controller and add reply-message
chachagof Mar 25, 2023
ab88e29
Profile:tweets list
Shiba-Patrick Mar 25, 2023
af3f677
Merge branch 'master' into feature/p
Shiba-Patrick Mar 25, 2023
9d0a615
modify setting, nav, followship and admin pages
vdiefn Mar 25, 2023
5eb1a00
Merge pull request #18 from vdiefn/feature/a
vdiefn Mar 25, 2023
90f5e4f
feat:add passport
chachagof Mar 25, 2023
5e058ea
update profile tweet
Shiba-Patrick Mar 25, 2023
98adc3c
Merge branch 'master' into chacha
chachagof Mar 25, 2023
3d8725f
Merge branch 'master' of https://github.com/vdiefn/twitter-fullstack-…
Shiba-Patrick Mar 25, 2023
51b704a
Merge pull request #19 from vdiefn/feature/p
vdiefn Mar 25, 2023
cd1d020
Merge branch 'master' into feature/p
Shiba-Patrick Mar 25, 2023
86b4e91
Merge branch 'master' of https://github.com/vdiefn/twitter-fullstack-…
Shiba-Patrick Mar 25, 2023
2f4d709
Merge branch 'master' into feature/p
Shiba-Patrick Mar 25, 2023
81cf7fb
feat:add signup verification and sign message flash
chachagof Mar 25, 2023
2b83d0b
Merge branch 'master' into chacha
chachagof Mar 25, 2023
f338dcb
feat:add signin
chachagof Mar 25, 2023
d433cb5
feat:add authenticae way
chachagof Mar 25, 2023
a74c3b3
setf likeContent&reply
Shiba-Patrick Mar 25, 2023
210a5d1
Merge pull request #20 from vdiefn/feature/p
chachagof Mar 25, 2023
a93c45c
feat:add helper to change tweet-created-time to chinese
chachagof Mar 25, 2023
0437d2f
Merge branch 'master' into chacha
chachagof Mar 25, 2023
b249c2e
Merge pull request #21 from vdiefn/chacha
Shiba-Patrick Mar 25, 2023
c9f197b
connect every function after login
Shiba-Patrick Mar 25, 2023
787db52
Merge pull request #23 from vdiefn/feature/p
vdiefn Mar 26, 2023
b7dd1a7
feat modify signin and put user verify check
chachagof Mar 26, 2023
ddde412
Merge branch 'master' into chacha
chachagof Mar 26, 2023
28c266e
feat:add new verify
chachagof Mar 26, 2023
83b760b
Merge pull request #24 from vdiefn/chacha
vdiefn Mar 26, 2023
2dbf9fb
feat: add followship to tweets index & add following function
vdiefn Mar 26, 2023
b32a90e
Merge pull request #25 from vdiefn/feature/a
chachagof Mar 26, 2023
9dc1b7e
feat:modify modal partials
chachagof Mar 26, 2023
f1820a5
feat:modify nav color
chachagof Mar 26, 2023
ddf4967
feat:modify middleware error-handler
chachagof Mar 26, 2023
b02780e
Merge pull request #26 from vdiefn/chacha
vdiefn Mar 26, 2023
9b53af2
modify addfollowing and removefollowing function
vdiefn Mar 26, 2023
a381ed1
Merge pull request #27 from vdiefn/feature/a
chachagof Mar 27, 2023
8c55a78
feat:add user page getFollowship
chachagof Mar 27, 2023
6efcaa7
feat:modify tweet page
chachagof Mar 27, 2023
6da9aa0
feat:modify followship page & prevent follow same account
chachagof Mar 27, 2023
ecefcb2
Merge pull request #28 from vdiefn/chacha
Shiba-Patrick Mar 27, 2023
b9488f5
tweetsPgae-Like/unLike
Shiba-Patrick Mar 27, 2023
f1d9938
Merge pull request #29 from vdiefn/feature/p
chachagof Mar 27, 2023
7627402
like router change & tweet like/unlike
Shiba-Patrick Mar 27, 2023
c95a316
feat:modify getFollower & getFollowing
chachagof Mar 27, 2023
eb9bc28
Merge pull request #30 from vdiefn/feature/p
chachagof Mar 27, 2023
6fbd173
feat:modify follow page
chachagof Mar 27, 2023
cb6fdc8
Merge branch 'master' into chacha
chachagof Mar 27, 2023
41a3b3c
feat:modify tweets page
chachagof Mar 27, 2023
35d8b97
Merge pull request #31 from vdiefn/chacha
Shiba-Patrick Mar 27, 2023
15b06b7
like-content unlike-button
Shiba-Patrick Mar 27, 2023
891bf53
feat:modify getUser controller add liked button
chachagof Mar 27, 2023
982d417
Merge pull request #32 from vdiefn/feature/p
chachagof Mar 27, 2023
7e35720
Merge branch 'master' into chacha
chachagof Mar 27, 2023
35eca81
Merge pull request #33 from vdiefn/chacha
vdiefn Mar 27, 2023
4ceea51
feat:modify getFollower
chachagof Mar 27, 2023
d2c1b9c
feat:add tweet like number
chachagof Mar 27, 2023
eb15e01
feat:modify avatar's link in tweets page
chachagof Mar 27, 2023
30abafb
feat:modify tweet page
chachagof Mar 27, 2023
bcdb1c2
feat:modify user-controller getUser for display likes & replies number
chachagof Mar 27, 2023
37463b0
feat: modify reply page
chachagof Mar 27, 2023
0c6009e
feat:modify like page
chachagof Mar 27, 2023
46b4252
feat:add sort way to getUser
chachagof Mar 27, 2023
9a654e7
Merge pull request #34 from vdiefn/chacha
vdiefn Mar 27, 2023
612a23b
modify admin/tweets & admin/users page & error message
vdiefn Mar 28, 2023
9fda81a
update reply
Shiba-Patrick Mar 28, 2023
7ba60bd
reply-seed update
Shiba-Patrick Mar 28, 2023
98b2605
seed little update
Shiba-Patrick Mar 28, 2023
980fc4c
Merge pull request #35 from vdiefn/feature/p
vdiefn Mar 28, 2023
850e079
feat:change like-content ordering way
chachagof Mar 28, 2023
aa8919f
cover photo
Shiba-Patrick Mar 28, 2023
95abe50
feat:change following sort way
chachagof Mar 28, 2023
de52846
feat:change follower sort way
chachagof Mar 28, 2023
41a774a
Merge pull request #36 from vdiefn/feature/p
chachagof Mar 28, 2023
96db919
Merge branch 'master' into chacha
chachagof Mar 28, 2023
a9eda9d
feat:change both sort way
chachagof Mar 28, 2023
db99e98
Merge pull request #37 from vdiefn/chacha
vdiefn Mar 28, 2023
9cd2db1
fear: add function: upload picture of avatar
vdiefn Mar 28, 2023
97bf353
merge conflict
vdiefn Mar 28, 2023
87b29ad
modify users page
vdiefn Mar 28, 2023
c85183a
Merge pull request #38 from vdiefn/feature/a
chachagof Mar 28, 2023
4859362
feat:fix user page and modify textarea in modal
chachagof Mar 28, 2023
e69ab43
feat:show real user follower and following in page
chachagof Mar 28, 2023
26ae94a
feat: modify message partials
chachagof Mar 28, 2023
e1672fd
feat:modify putSetting
chachagof Mar 28, 2023
4a58f8b
Merge pull request #39 from vdiefn/chacha
vdiefn Mar 28, 2023
3f2f2ed
feat: move nav modal to independent partial
chachagof Mar 29, 2023
14c2445
feat:modify tweets reply modal to independent partial
chachagof Mar 29, 2023
b9615b1
feat:modify post modal
chachagof Mar 29, 2023
9fbbd72
feat:modify reply modal
chachagof Mar 29, 2023
9be404c
Merge pull request #40 from vdiefn/chacha
Shiba-Patrick Mar 29, 2023
99efdec
modify fuction of adding avatar and cover
vdiefn Mar 29, 2023
f5cbf58
merge confict
vdiefn Mar 29, 2023
a283cce
Merge pull request #41 from vdiefn/feature/a
Shiba-Patrick Mar 29, 2023
56be7d2
feat:pass model test
chachagof Mar 29, 2023
b67139a
edit-modal update
Shiba-Patrick Mar 29, 2023
5e005cf
Merge pull request #42 from vdiefn/feature/p
vdiefn Mar 29, 2023
59b75ae
modify nav & admin-nav pages
vdiefn Mar 29, 2023
dfdc566
edit-modal update
vdiefn Mar 29, 2023
e5044a1
Merge pull request #43 from vdiefn/feature/a
chachagof Mar 29, 2023
c9bd327
Merge branch 'master' into chacha
chachagof Mar 29, 2023
e6fce3d
modify signin, signup, admin-signin page, and add success-message at …
vdiefn Mar 29, 2023
ae16210
Merge pull request #44 from vdiefn/feature/a
chachagof Mar 29, 2023
0784cae
feat:modify package.json
chachagof Mar 29, 2023
32756e7
Merge branch 'master' into chacha
chachagof Mar 29, 2023
7089624
modify edit button at users, reply & like-content
vdiefn Mar 30, 2023
1a942f0
feat:modify checkPassword to pass test
chachagof Mar 30, 2023
033d722
logout
Shiba-Patrick Mar 30, 2023
7f27c85
a to /
Shiba-Patrick Mar 30, 2023
c413b17
add error message at reply modal
vdiefn Mar 30, 2023
b9a2d25
admin delete on click
Shiba-Patrick Mar 30, 2023
4b17b0a
users reply like hbs update
Shiba-Patrick Mar 30, 2023
e07088a
add error message at post-modal
vdiefn Mar 30, 2023
57c1ab5
Merge pull request #45 from vdiefn/chacha
Shiba-Patrick Mar 30, 2023
5da8fd4
Merge pull request #47 from vdiefn/feature/a
Shiba-Patrick Mar 30, 2023
b3d376a
user.hbs
Shiba-Patrick Mar 30, 2023
0fb0c63
user.hbs
Shiba-Patrick Mar 30, 2023
ed793e9
Merge pull request #46 from vdiefn/feature/p
vdiefn Mar 30, 2023
069c60a
Merge branch 'master' into chacha
chachagof Mar 30, 2023
b6b8d84
add follow button at users page
vdiefn Mar 30, 2023
87f9de1
feat: add imgur api
vdiefn Mar 30, 2023
4e29ad2
Merge pull request #48 from vdiefn/feature/a
chachagof Mar 30, 2023
24ecb51
Merge branch 'master' into chacha
chachagof Mar 30, 2023
4ac317a
Merge pull request #49 from vdiefn/chacha
vdiefn Mar 30, 2023
a4d6a5d
feat: modify Procfile
vdiefn Mar 30, 2023
22c250a
add avatr display at modals, tweets, followship and modify addfollowi…
vdiefn Mar 31, 2023
3041a90
Merge pull request #50 from vdiefn/feature/a
chachagof Mar 31, 2023
9fc281b
dotenv
Shiba-Patrick Mar 31, 2023
2dc599e
feat:modify middleware auth to pass admin/user test
chachagof Mar 31, 2023
3fd9247
feat:modify middle auth authenticated redirect to pass test
chachagof Mar 31, 2023
c22e318
Merge pull request #51 from vdiefn/chacha
Shiba-Patrick Mar 31, 2023
0415189
Merge branch 'master' of https://github.com/vdiefn/twitter-fullstack-…
Shiba-Patrick Mar 31, 2023
70e7f2f
feat:modify followship related code to pass test
chachagof Mar 31, 2023
b4eb167
route change
Shiba-Patrick Mar 31, 2023
3e4260f
like route change
Shiba-Patrick Mar 31, 2023
7e9f3c0
feat:modify tweet-controller & reply-controller & some views to pass …
chachagof Mar 31, 2023
0d87dc1
Merge pull request #52 from vdiefn/feature/p
chachagof Mar 31, 2023
ca418da
Merge branch 'master' into chacha
chachagof Mar 31, 2023
e17c4e6
Update tweet.hbs
Shiba-Patrick Mar 31, 2023
3d91e0b
Merge pull request #53 from vdiefn/chacha
Shiba-Patrick Mar 31, 2023
736d866
feat: modify tweet-controller and router to pass tweet test
chachagof Mar 31, 2023
d6595a1
Merge branch 'master' into chacha
chachagof Mar 31, 2023
55c0682
avatar to profile
Shiba-Patrick Mar 31, 2023
fbca6a6
unlike update
Shiba-Patrick Mar 31, 2023
1bfaa1e
feat:modify controller and add api mode to pass user test
chachagof Mar 31, 2023
9d536c3
Merge pull request #54 from vdiefn/feature/p
vdiefn Mar 31, 2023
dd898b8
Merge branch 'master' into chacha
chachagof Mar 31, 2023
dfe6317
Merge pull request #55 from vdiefn/chacha
Shiba-Patrick Mar 31, 2023
5c9488c
setting
Shiba-Patrick Mar 31, 2023
906413c
Merge pull request #56 from vdiefn/feature/p
vdiefn Mar 31, 2023
48fe335
add error&success message at setting page
vdiefn Mar 31, 2023
2f98b02
Merge pull request #57 from vdiefn/feature/a
chachagof Mar 31, 2023
a023f6a
feat:modify avatar link
chachagof Mar 31, 2023
d2558f1
Merge pull request #58 from vdiefn/chacha
vdiefn Mar 31, 2023
692ca31
modify putUser's controller
vdiefn Mar 31, 2023
39d42eb
Merge pull request #59 from vdiefn/feature/a
chachagof Mar 31, 2023
e6d3b3a
modify router order
vdiefn Mar 31, 2023
8c10b5a
Merge pull request #60 from vdiefn/feature/a
Shiba-Patrick Mar 31, 2023
479182a
profile avatar set
Shiba-Patrick Apr 1, 2023
4bba023
Merge pull request #61 from vdiefn/feature/p
vdiefn Apr 1, 2023
ef31a52
modify user page
vdiefn Apr 1, 2023
26ed8b3
modify users page, add function of delete cover
vdiefn Apr 1, 2023
4144fc0
Merge branch 'feature/a' of https://github.com/vdiefn/twitter-fullsta…
vdiefn Apr 1, 2023
9b0de44
Merge pull request #62 from vdiefn/feature/a
Shiba-Patrick Apr 1, 2023
b00a058
feat: add readme and delete console.log
chachagof Apr 1, 2023
49f0112
Merge branch 'master' into chacha
chachagof Apr 1, 2023
110bbd4
feat:modify follower and following
chachagof Apr 1, 2023
097f0c1
Merge pull request #63 from vdiefn/chacha
chachagof Apr 1, 2023
9e7a5a8
modify pages
vdiefn Apr 1, 2023
7866784
Merge pull request #64 from vdiefn/feature/a
chachagof Apr 1, 2023
a276b64
modify icon size and users page
vdiefn Apr 1, 2023
bd5402a
feat:modify user profile nav
chachagof Apr 1, 2023
2bf41b7
Merge pull request #65 from vdiefn/feature/a
chachagof Apr 1, 2023
1d404f5
Merge branch 'master' into chacha
chachagof Apr 1, 2023
3c63f5d
Merge pull request #66 from vdiefn/chacha
vdiefn Apr 1, 2023
f4f8910
seed
Shiba-Patrick Apr 2, 2023
905016a
Merge pull request #67 from vdiefn/feature/p
chachagof Apr 2, 2023
0d4d085
modify tweets page
vdiefn Apr 2, 2023
c3895d3
modify edit modal
vdiefn Apr 2, 2023
0dfa3e2
Merge pull request #68 from vdiefn/feature/a
Shiba-Patrick Apr 2, 2023
0713735
setting
Shiba-Patrick Apr 2, 2023
692d19e
Merge pull request #69 from vdiefn/feature/p
vdiefn Apr 2, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
IMGUR_CLIENT_ID=
53 changes: 53 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
* text=auto

# Source code
*.css text diff=css
*.html text diff=html
*.js text
*.json text

# Documentation
*.markdown text diff=markdown
*.md text diff=markdown
*.txt text

# Templates
*.handlebars text
*.hbs text

# Configs
*.cnf text
*.conf text
*.config text
.editorconfig text
.env text
.env.* text
.gitattributes text
.gitconfig text
*.lock text -diff
package.json text eol=lf
package-lock.json text -diff
yarn.lock text -diff
*.yaml text
*.yml text
browserslist text

# Heroku
Procfile text

# Graphics
*.gif binary
*.ico binary
*.jpg binary
*.jpeg binary
*.pdf binary
*.png binary
# SVG treated as an asset (binary) by default.
*.svg text
# If you want to treat it as binary,
# use the following line instead.
# *.svg binary
*.webp binary

# Ignore files (like .npmignore or .gitignore)
*.*ignore text
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
.DS_Store
*.DS_Store

temp/
upload/

# Logs
logs
*.log
Expand Down
1 change: 1 addition & 0 deletions Procfile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
web: NODE_ENV=production node app.js
97 changes: 97 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# Simple Twitter

使用 Node.js & Express 打造類似Twitter的網站。

### Live Demo

[Heroku Link](https://shrouded-mountain-99064.herokuapp.com/signin)

### 產品功能

1. 使用者提供指定資訊即可註冊帳號並使用後續功能。註冊所需資料包括:帳號、名稱、Email、密碼、確認密碼。
2. 當使用者進行註冊時,提示使用者輸入是否合乎所需資料格式。
3. 使用者進行註冊的帳戶和email不會與他人重複。
4. 使用者必須登入才能開始使用,並在未註冊時登入會有錯誤提示阻擋。
5. 使用者成功登入後,首頁為所有使用者的推文,順序由最新排至最舊
6. 使用者可以回覆每篇貼文、觀看所有推文的所有回覆
7. 使用者可以對貼文按下喜歡做喜歡紀錄或取消喜歡推文的紀錄。
8. 使用者可以到設定頁做個人帳戶編輯設定,並且無法修改他人帳戶。
9. 使用者可以透過個人檔案編輯個人大頭照、頁面背景照、自我介紹,及暱稱。
10. 貼文、回覆、編輯檔案抖有相對應限制,當使用者使用相關功能時會做提示。
11. 使用者可以根據自己喜好任意追蹤或取消追蹤其他使用者。
12. 管理者可以查看所有的推文、及刪除推文。
13. 管理者可以查看所有的使用者資訊,包括推文數、喜歡數量、被追蹤、追蹤數量。

### 測試帳號

1. User (提供使用者: user1~user5 )

> account : user1
> Password: 12345678
2. Admin
> Account : root
> Password: 12345678

### 安裝流程

1.開啟終端機將專案存至本機,在終端機輸入 :
```
git clone https://github.com/vdiefn/twitter-fullstack-2020.git
```

2. 使用終端機指令,進入存放此專案的資料夾。

```
cd twitter-fullstack-2020
```


3. 安裝`npm`套件,在終端機輸入:
```
npm install
```

4.環境變數設定 請參考.env.example檔案設定環境變數,並將檔名改為.env
```
IMGUR_CLIENT_ID=
```

5. 開啟MySQLWorkbench ,使用SQL指令,在本地建立資料庫。

```
drop database if exists ac_twitter_workspace;
create database ac_twitter_workspace;
use ac_twitter_workspace;
```

6. 回到專案資料夾下使用終端機,建立mySQL Table。

```
npx sequelize db:migrate
```

7. 匯入種子檔案, 產生測試用的初始資料。

```
npx sequelize db:seed:all
```

8. 執行npm腳本指令,啟動伺服器

```
npm run dev
```

9. 使用

當終端機出現下列訊息,可開啟瀏覽器輸入 http://localhost:3000 使用

```
Example app listening on port 3000!
```


### 共同開發人員
[Ellen](https://github.com/vdiefn)
[Patrick](https://github.com/Shiba-Patrick)
[Chacha](https://github.com/chachagof)
36 changes: 33 additions & 3 deletions app.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,43 @@
if (process.env.NODE_ENV !== 'production') {
require('dotenv').config()
}
const express = require('express')
const helpers = require('./_helpers');
const exphbs = require('express-handlebars')
const routes = require('./routes')
const methodOverride = require('method-override')
const helpers = require('./_helpers')
const handlebarsHelpers = require('./helpers/handlebars-helpers')
const session = require('express-session')
const flash = require('connect-flash')
const passport = require('passport')
const path = require('path')

const app = express()
const port = 3000
const port = process.env.PORT || 3000

// use helpers.getUser(req) to replace req.user
// use helpers.ensureAuthenticated(req) to replace req.isAuthenticated()

app.get('/', (req, res) => res.send('Hello World!'))
app.engine('hbs', exphbs({ defaultLayout: 'main', extname: '.hbs', helpers: handlebarsHelpers }))
app.set('view engine', 'hbs')
app.use(express.urlencoded({ extended: true })) // body-Parser
app.use(methodOverride('_method')) // methodOverride
app.use(session({ secret: 'secret', resave: false, saveUninitialized: true })) //session
app.use(passport.initialize()) //passport
app.use(passport.session()) //passport
app.use(flash())// connect-flash
app.use('/upload', express.static(path.join(__dirname, 'upload')))//上傳圖片
app.use((req, res, next) => {
res.locals.success_messages = req.flash('success_messages')
res.locals.wrong_messages = req.flash('wrong_messages')
res.locals.error_messages = req.flash('error_messages')
// res.locals.error_reply = req.flash('error_reply')
res.locals.user = helpers.getUser(req)
next()
})

app.use(routes)

app.listen(port, () => console.log(`Example app listening on port ${port}!`))

module.exports = app
6 changes: 1 addition & 5 deletions config/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,7 @@
"logging": false
},
"production": {
"username": "root",
"password": null,
"database": "database_production",
"host": "127.0.0.1",
"dialect": "mysql"
"use_env_variable": "CLEARDB_DATABASE_URL"
},
"travis": {
"username": "travis",
Expand Down
43 changes: 43 additions & 0 deletions config/passport.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
const passport = require('passport')
const localStrategy = require('passport-local').Strategy
const bcrypt = require('bcryptjs')
const { User, Tweet } = require('../models')

passport.use(new localStrategy(
{
usernameField: 'account',
passwordField: 'password',
passReqToCallback: 'true'
},
(req, account, password, done) => {
User.findOne({ where: { account } })
.then(user => {
if (!user) return done(null, false, req.flash('wrong_messages', '帳號或密碼輸入錯誤!'))
bcrypt.compare(password, user.password)
.then(res => {
if (!res) return done(null, false, req.flash('wrong_messages', '帳號或密碼輸入錯誤!'))
return done(null, user)
})
})
}
))

passport.serializeUser((user, done) => {
done(null, user.id)
})
passport.deserializeUser((userId, done) => {
User.findByPk(userId, {
include: [
{ model: User, as: 'Followers' },
{ model: User, as: 'Followings' },
{ model: Tweet, as: 'LikedTweets' },
Tweet
]
})
.then(user => {
user = user.toJSON()
return done(null, user)
})
})

module.exports = passport
67 changes: 67 additions & 0 deletions controllers/admin-controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
const { User, Tweet, Followship, Like } = require('../models')
const helpers = require('../_helpers')

const adminController = {
signInPage: (req, res) => { // 後台登入
res.render('admin/signin')
},
signIn: (req, res, next) => {
req.flash('success_messages', '成功登入!')
res.redirect('/admin/tweets')
},
getTweets: (req, res, next) => { // 後台取得推文清單
return Tweet.findAll({
include: User,
nest: true,
raw: true,
order: [
['createdAt', 'DESC'],
]
}).then((tweets) => {
const data = tweets.map(t => ({
...t,
description: t.description.substring(0, 50)
}))
return res.render('admin/tweets', { tweets: data })
})
.catch(err => console.log(err))
}
,
getUsers: (req, res, next) => { // 後台取得使用者列表
return User.findAll({
include: [
{ model: User, as: 'Followings' },
{ model: User, as: 'Followers' },
{ model: Tweet, as: 'LikedTweets'},
Tweet
]
})
.then((users) => {
users = users.map(user => ({
...user.toJSON(),
// 計算追蹤人數
followerCount: user.Followers.length,
followingCount: user.Followings.length,
likeCount: user.LikedTweets.length,
tweetsCount: user.Tweets.length
}))
users = users.sort((a, b) => b.tweetsCount - a.tweetsCount)
return res.render('admin/users', { users })
})
.catch(err => console.log(err))
},
deleteTweet: (req, res) => { // 後台刪除tweet
return Tweet.findByPk(req.params.id)
.then(tweet => {
if (!tweet) throw new Error("Tweet didn't exist!")
return tweet.destroy()
})
.then(() => res.redirect('/admin/tweets'))
.catch(err => console.log(err))
},
logout: (req, res) => { // 後台登出
res.redirect('signin')
}
}

module.exports = adminController
30 changes: 30 additions & 0 deletions controllers/api-controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
const { User } = require('../models')
const helpers = require('../_helpers')

const apiController = {
getUser: (req, res,) => { // 取得帳戶設定頁面
const id = req.params.id
if (+id !== +helpers.getUser(req).id){
return res.json({status:'error'})
}
return User.findByPk(id, { raw: true, nest: true })
.then(user => {
if(!user)throw new Error ('沒有此使用者')
return res.status(200).json(user)
})
.catch(err => next(err))
},
postUser: (req, res, next) => { // 編輯帳戶設定
const { name } = req.body
const id = req.params.id
return User.findByPk(id)
.then(user => {
if (!user) throw new Error('沒有此使用者')
return user.update({name})
})
.then(user => res.json({status:'success', user}))
.catch(err => next(err))
}
}

module.exports = apiController
Loading