Skip to content
Merged

Dev #190

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
592 commits
Select commit Hold shift + click to select a range
68aa33b
fix(fcm store): if fcm token not found don't throw an error
ahmedGamalEllabban Nov 29, 2025
00fbbf1
cleanup code
ahmedGamalEllabban Nov 29, 2025
fdf78d5
Add flags to determine block/mute statuses in profile responses
ahmedGamalEllabban Nov 29, 2025
ba5bba0
Merge pull request #119 from SWEProject25/enhancement/add-flags-in-pr…
OmarNabil005 Nov 29, 2025
b05ee86
Merge branch 'dev' into feat/notifications
ahmedGamalEllabban Nov 29, 2025
402afcb
resolve(shcema): fix HashtagTrend schema table
ahmedGamalEllabban Nov 29, 2025
a0ea543
Update private-trigger.yml
karimzakzouk Nov 30, 2025
f53af03
feat(auth): add flutter oauth
mohamed-sameh-albaz Dec 1, 2025
7d5446a
Merge pull request #120 from SWEProject25/feature/trends
YousefAref72 Dec 2, 2025
02db7c2
Merge pull request #118 from SWEProject25/feat/notifications
ahmedGamalEllabban Dec 2, 2025
8b08953
Change search response formatting, add order_by and before_date query…
ahmedGamalEllabban Dec 2, 2025
1ea7dc6
Change hashtag search response to the same
ahmedGamalEllabban Dec 2, 2025
584cbe0
add verified, is_followed_by_me and is_muted_by_me in search profiles…
ahmedGamalEllabban Dec 2, 2025
49c08d8
return verified flag with profile responses
ahmedGamalEllabban Dec 2, 2025
a8e4537
Merge pull request #121 from SWEProject25/enhancement/search
karimzakzouk Dec 2, 2025
cc679a3
Update private-trigger.yml
karimzakzouk Dec 2, 2025
dcbc013
Update private-trigger.yml
karimzakzouk Dec 3, 2025
ebd937f
feat: added unseen messages count for old endpoints and added a new e…
OmarNabil005 Dec 3, 2025
d93d1dd
refactor and extra logic for cross-platform
OmarNabil005 Dec 3, 2025
9e9b22c
Merge pull request #122 from SWEProject25/feat/unread-message-count
ahmedGamalEllabban Dec 3, 2025
0166393
handle mentions atomicly
YousefAref72 Dec 3, 2025
05dd04c
generalize post response in profile
YousefAref72 Dec 3, 2025
ee6a6bf
Merge pull request #123 from SWEProject25/refactor/post-mention
OmarNabil005 Dec 3, 2025
164578f
added stats caching and fetching
OmarNabil005 Dec 3, 2025
6d86982
real time updates using sockets
OmarNabil005 Dec 4, 2025
74142eb
Replace RedisService with RedisModule in post.module.ts
mohamed-sameh-albaz Dec 4, 2025
1495405
Merge pull request #124 from SWEProject25/feat/real-time-updates
mohamed-sameh-albaz Dec 4, 2025
7f15b3c
fix verify password response
mohamed-sameh-albaz Dec 4, 2025
6764c46
Merge pull request #125 from SWEProject25/feature/trends
mohamed-sameh-albaz Dec 4, 2025
68abe15
chore(packages): update dependencies
mohamed-sameh-albaz Dec 4, 2025
7b6b89e
feat: Migrate summarization service from OpenAI to Groq, updating dep…
karimzakzouk Dec 4, 2025
93c8dca
Merge branch 'dev' into feat/replace-openai-with-groq
karimzakzouk Dec 4, 2025
bfc01aa
feat(oauth): add google oauth endpoint for mobile and redirect github…
mohamed-sameh-albaz Dec 4, 2025
2d69a47
Delete package-lock.json
mohamed-sameh-albaz Dec 4, 2025
2fded6a
Merge pull request #126 from SWEProject25/feat/replace-openai-with-groq
OmarNabil005 Dec 4, 2025
e6437c3
chore: lock dependency versions with package-lock.json
karimzakzouk Dec 4, 2025
a755040
chore: remove package-lock.json
karimzakzouk Dec 4, 2025
4e830a3
chore: Generate package-lock.json to lock dependencies.
karimzakzouk Dec 4, 2025
cf2cfe6
Merge branch 'dev' into feature/trends
karimzakzouk Dec 4, 2025
708cd9d
Merge pull request #127 from SWEProject25/feature/trends
karimzakzouk Dec 4, 2025
59cc6d5
chore: update locked dependencies.
karimzakzouk Dec 4, 2025
0df7624
remove is deleted from where clause (deletion only happens on sender …
OmarNabil005 Dec 4, 2025
23875a2
Fix timeline explore
Dec 4, 2025
90c1c98
Fix timeline explore
Dec 4, 2025
ab20744
Merge pull request #129 from SWEProject25/Fix/timeline-explore
Salah3060 Dec 4, 2025
39001f8
added followers you know endpoint
OmarNabil005 Dec 4, 2025
1e78d46
Merge branch 'dev' of github.com:SWEProject25/backend into feat/follo…
OmarNabil005 Dec 4, 2025
6079d04
refactor user profile posts responses
YousefAref72 Dec 4, 2025
6c50aac
fix build
YousefAref72 Dec 4, 2025
cc5fc91
Merge pull request #131 from SWEProject25/refactor/profile-posts-resp…
OmarNabil005 Dec 4, 2025
6dc8c4d
Merge branch 'dev' of github.com:SWEProject25/backend into feat/follo…
OmarNabil005 Dec 4, 2025
32f7658
fix query syntax
OmarNabil005 Dec 4, 2025
72301c9
Merge pull request #130 from SWEProject25/feat/followers-you-know
OmarNabil005 Dec 4, 2025
cc5f09a
feat(trends): add normal trends flow with backgournd job for calculat…
mohamed-sameh-albaz Dec 5, 2025
1f43818
feat(util): global extract hashtags util
mohamed-sameh-albaz Dec 5, 2025
57007ac
test(trends): add init trends.controller.spec file
mohamed-sameh-albaz Dec 5, 2025
860d962
Merge branch 'feature/trends' of https://github.com/SWEProject25/back…
mohamed-sameh-albaz Dec 5, 2025
9ef869a
chore(packages): update packages
mohamed-sameh-albaz Dec 5, 2025
21f130d
Merge branch 'dev' into feature/trends
mohamed-sameh-albaz Dec 5, 2025
e848771
fix(auth): change redirect token format from hash to query parameter
mohamed-sameh-albaz Dec 5, 2025
8143c5a
Merge branch 'feature/trends' of https://github.com/SWEProject25/back…
mohamed-sameh-albaz Dec 5, 2025
82bc94c
Merge pull request #128 from SWEProject25/fix/unread-messages-count
OmarNabil005 Dec 5, 2025
998e2a8
Merge pull request #132 from SWEProject25/feature/trends
YousefAref72 Dec 5, 2025
7353500
feat(oauth): add mobile exchange code to tokens endpoint
mohamed-sameh-albaz Dec 5, 2025
322a931
Merge pull request #133 from SWEProject25/feature/trends
mohamed-sameh-albaz Dec 5, 2025
51b753a
feat(post): enhance user interaction flags in post interfaces and ser…
YousefAref72 Dec 6, 2025
17e9260
Merge pull request #134 from SWEProject25/refactor/profile-posts-resp…
OmarNabil005 Dec 6, 2025
2e7f460
Add include/exclude filters for notifications/unread-count
ahmedGamalEllabban Dec 6, 2025
676aa46
fix mention issue and enrich quote or reply
YousefAref72 Dec 6, 2025
501878b
Add post model with related notifications
ahmedGamalEllabban Dec 6, 2025
d0db83d
Remove unused data
ahmedGamalEllabban Dec 6, 2025
a0024b1
Merge pull request #135 from SWEProject25/refactor/profile-posts-resp…
ahmedGamalEllabban Dec 6, 2025
540b707
Merge branch 'dev' into enhancement/profile-notification-search
ahmedGamalEllabban Dec 6, 2025
cc8e68b
Merge pull request #136 from SWEProject25/enhancement/profile-notific…
YousefAref72 Dec 6, 2025
4255a05
Add is_following_me flag for get user by id/username
ahmedGamalEllabban Dec 6, 2025
f63f244
AABB[BMerge branch 'dev' into enhancement/profile-notification-search
ahmedGamalEllabban Dec 6, 2025
0ce0d84
filters for blocked users + isFollowingMe
OmarNabil005 Dec 6, 2025
91aec9c
Add orderd_by latest and top for hashtags
ahmedGamalEllabban Dec 6, 2025
4e0af12
fix
OmarNabil005 Dec 6, 2025
1324eef
Merge pull request #137 from SWEProject25/feat/filter-blocked-followers
mohamed-sameh-albaz Dec 6, 2025
cd86819
Add mentions with posts search/ hashtag search
ahmedGamalEllabban Dec 6, 2025
c19b4d5
Merge pull request #138 from SWEProject25/enhancement/profile-notific…
mohamed-sameh-albaz Dec 6, 2025
c2fa1d6
filtered users who block me
OmarNabil005 Dec 7, 2025
efcb0e9
Merge pull request #140 from SWEProject25/fix/followers-who-block-me
OmarNabil005 Dec 7, 2025
7d28612
change in get likers of a post response
YousefAref72 Dec 8, 2025
bd0d703
feat(trends): add trends categorization
mohamed-sameh-albaz Dec 8, 2025
0e3f007
Merge pull request #142 from SWEProject25/feature/trends
OmarNabil005 Dec 8, 2025
8f85493
fixed unseen mesages count
OmarNabil005 Dec 8, 2025
cc6699f
Merge pull request #141 from SWEProject25/refactor/profile-posts-resp…
OmarNabil005 Dec 8, 2025
cc4d479
responded with post stats on connecting to post room
OmarNabil005 Dec 8, 2025
e2140ec
Merge pull request #143 from SWEProject25/fix/messages-seen
YousefAref72 Dec 8, 2025
fe33031
explore for-you
Dec 9, 2025
507f1dd
Merge pull request #144 from SWEProject25/feat/explore-for-you
OmarNabil005 Dec 9, 2025
43e23a8
allow passing mentions ids as concatenated string
YousefAref72 Dec 9, 2025
da74c50
Merge branch 'dev' of https://github.com/SWEProject25/backend into re…
YousefAref72 Dec 9, 2025
1e3beba
Merge pull request #145 from SWEProject25/refactor/profile-posts-resp…
YousefAref72 Dec 9, 2025
7bd2f8b
fixed updatedAt issue
OmarNabil005 Dec 9, 2025
4ee749a
Merge pull request #146 from SWEProject25/fix/conversation-update
OmarNabil005 Dec 9, 2025
88d10ab
feat(password): update mobile reset password URL for OAuth redirection
mohamed-sameh-albaz Dec 10, 2025
0f9d845
Merge pull request #147 from SWEProject25/feature/trends
YousefAref72 Dec 10, 2025
073154e
Add unit tests for MentionService, likeService, and enhance PostServi…
YousefAref72 Dec 10, 2025
a6da27e
feat(timeline)
Dec 10, 2025
cfe054b
feat(post): add interest extraction functionality and update post pro…
YousefAref72 Dec 10, 2025
5a9b5bc
Merge pull request #148 from SWEProject25/feat/explore-for-you
ahmedGamalEllabban Dec 10, 2025
fb41211
Merge branch 'dev' of https://github.com/SWEProject25/backend into fe…
YousefAref72 Dec 10, 2025
006f31e
Merge pull request #149 from SWEProject25/feature/posts-interests-job
ahmedGamalEllabban Dec 10, 2025
8c9a3dd
Merge pull request #150 from SWEProject25/tests/posts-coverage-improv…
ahmedGamalEllabban Dec 10, 2025
d712264
handled block in conversations endpoints
OmarNabil005 Dec 10, 2025
28c95f5
handled block in messages endpoints
OmarNabil005 Dec 10, 2025
ecc77de
fix socket disconnect on thrown exceptions
OmarNabil005 Dec 10, 2025
40863c4
refactor
OmarNabil005 Dec 10, 2025
2bc9976
Merge pull request #151 from SWEProject25/feat/block-messages
ahmedGamalEllabban Dec 10, 2025
0645729
added socket unit tests
OmarNabil005 Dec 11, 2025
138aff5
removed unnecessary files
OmarNabil005 Dec 11, 2025
f9d502a
added messages unit tests
OmarNabil005 Dec 11, 2025
6ea3516
added conversations unit tests
OmarNabil005 Dec 11, 2025
b5b9c1a
dto tests and ignore .module
OmarNabil005 Dec 11, 2025
b65dbc6
added coverage ignore paths
OmarNabil005 Dec 11, 2025
6048775
Merge pull request #152 from SWEProject25/feat/messages-unit-test
OmarNabil005 Dec 11, 2025
37cc06c
fix(migrations): rename trends table
mohamed-sameh-albaz Dec 11, 2025
a603553
Merge branch 'dev' of https://github.com/SWEProject25/backend into dev
mohamed-sameh-albaz Dec 11, 2025
0c9e053
fix(password): reset passwrod email
mohamed-sameh-albaz Dec 11, 2025
4f1d079
Merge pull request #153 from SWEProject25/feature/trends
karimzakzouk Dec 11, 2025
39e04d5
added users unit tests
OmarNabil005 Dec 11, 2025
9766810
change mention style
Dec 11, 2025
9ce113d
change mention style
Dec 11, 2025
373913a
Merge pull request #155 from SWEProject25/feat/explore-for-you
Salah3060 Dec 11, 2025
8009abf
feat: add comprehensive tests for notification controller and DTO, an…
ahmedGamalEllabban Dec 11, 2025
ab3a8c6
Merge pull request #156 from SWEProject25/testing/add-notifications-u…
ahmedGamalEllabban Dec 11, 2025
72b3134
remove post visiblity as upcoming feature
YousefAref72 Dec 11, 2025
11ffc6d
Merge pull request #157 from SWEProject25/refactor/post-visiablity
YousefAref72 Dec 11, 2025
5480312
Use pattern matching alongside similarity function to search posts
ahmedGamalEllabban Dec 11, 2025
0fa10d3
perf: Add `pg_trgm` extension and GIN index to `posts.content` for ef…
ahmedGamalEllabban Dec 11, 2025
450a3da
feat: Add `originalPostData` to `NotificationPostData` and implement …
ahmedGamalEllabban Dec 11, 2025
206e81f
feat: Add DTO validation tests and enhance profile relationship statu…
ahmedGamalEllabban Dec 11, 2025
b688149
refactor(email): send emails with background job
mohamed-sameh-albaz Dec 12, 2025
4eec410
feat(trends): add cron schedule job to schedule trend calculation
mohamed-sameh-albaz Dec 12, 2025
9118ab8
chore(dependencies): update packages
mohamed-sameh-albaz Dec 12, 2025
8331940
fix(trends): trends service batch calculation
mohamed-sameh-albaz Dec 12, 2025
40632c3
feat(prisma): add trends category to schema
mohamed-sameh-albaz Dec 12, 2025
16b9209
Merge branch 'dev' of https://github.com/SWEProject25/backend into fe…
mohamed-sameh-albaz Dec 12, 2025
00bab74
Merge pull request #154 from SWEProject25/feat/user-interactions-unit…
OmarNabil005 Dec 12, 2025
2a0a6d1
Merge pull request #158 from SWEProject25/enhancement/search-profile
OmarNabil005 Dec 12, 2025
795deae
moved quotes count to retweets count
OmarNabil005 Dec 12, 2025
35ecd2f
Merge pull request #159 from SWEProject25/fix/real-time-updates
ahmedGamalEllabban Dec 12, 2025
d448a6e
feat: enhance post deletion, change response, and validtaions
YousefAref72 Dec 12, 2025
dd02e86
Merge pull request #160 from SWEProject25/refactor/post-visiablity
mohamed-sameh-albaz Dec 12, 2025
4fc7449
refactor(migration): reset prisma migrations
mohamed-sameh-albaz Dec 12, 2025
c74928f
refactor: optimizie trends calculation
mohamed-sameh-albaz Dec 12, 2025
845e694
refactor: update Post Create to return enriched post
YousefAref72 Dec 12, 2025
ad8984b
Merge pull request #161 from SWEProject25/refactor/post-visiablity
YousefAref72 Dec 12, 2025
219aa08
fix: fix flages bugs
YousefAref72 Dec 12, 2025
7a82183
add extra nest layer incase of quote
Dec 12, 2025
18ee011
Merge pull request #163 from SWEProject25/feat/explore-for-you
Salah3060 Dec 12, 2025
c6de851
Merge pull request #162 from SWEProject25/refactor/post-visiablity
ahmedGamalEllabban Dec 12, 2025
85a9425
fix(trends): handle personalized trends - missing add user id
mohamed-sameh-albaz Dec 12, 2025
a9e30ad
fix post spec
YousefAref72 Dec 12, 2025
85ffa1c
Merge branch 'dev' of https://github.com/SWEProject25/backend into re…
YousefAref72 Dec 12, 2025
e195ee5
perf: Add pg_trgm extension and GIN index to posts.content for effici…
mohamed-sameh-albaz Dec 12, 2025
8e53494
Merge pull request #165 from SWEProject25/refactor/post-visiablity
OmarNabil005 Dec 12, 2025
0370fcb
Merge pull request #164 from SWEProject25/feature/trends
OmarNabil005 Dec 12, 2025
219f32b
issue: personalized trends need userId
mohamed-sameh-albaz Dec 12, 2025
93f2cdc
Merge pull request #166 from SWEProject25/feature/trends
mohamed-sameh-albaz Dec 12, 2025
9f3b08b
Update private-trigger.yml
karimzakzouk Dec 12, 2025
b507698
Update private-trigger.yml
karimzakzouk Dec 12, 2025
1bc4602
fix(prisma): add user_id for trends to personalize trends
mohamed-sameh-albaz Dec 13, 2025
866fa39
fix(trends): update trends schema constraints
mohamed-sameh-albaz Dec 13, 2025
71c2726
fix(trends): handle personalized trends
mohamed-sameh-albaz Dec 13, 2025
ec7ad3d
Merge pull request #167 from SWEProject25/fix/personalized-trends
OmarNabil005 Dec 14, 2025
bd62a73
fix timeline counts
Dec 14, 2025
87cc61a
Update src/post/services/post.service.ts
Salah3060 Dec 14, 2025
a44db4e
Update src/post/services/post.service.ts
Salah3060 Dec 14, 2025
96aeb08
Update src/post/services/post.service.ts
Salah3060 Dec 14, 2025
d788946
Update src/post/services/post.service.ts
Salah3060 Dec 14, 2025
7df4556
Update src/post/services/post.service.ts
Salah3060 Dec 14, 2025
ab1e876
Update src/post/services/post.service.ts
Salah3060 Dec 14, 2025
9d5100b
Update src/post/services/post.service.ts
Salah3060 Dec 14, 2025
3dbb354
Merge pull request #168 from SWEProject25/Fix/timeline
Salah3060 Dec 14, 2025
67a1fc7
Comment out CronModule in app.module.ts
mohamed-sameh-albaz Dec 14, 2025
0192d68
enrich quote with post in replies
YousefAref72 Dec 14, 2025
e22ae3c
Merge branch 'dev' of https://github.com/SWEProject25/backend into re…
YousefAref72 Dec 14, 2025
1191b6e
Merge pull request #169 from SWEProject25/refactor/post-visiablity
mohamed-sameh-albaz Dec 14, 2025
73fd41f
fix: add missing fields in post model with notification
ahmedGamalEllabban Dec 14, 2025
a6271bd
fix: don't send notification of muted users
ahmedGamalEllabban Dec 14, 2025
d3143a8
fix: add missing fields to notification interface
ahmedGamalEllabban Dec 14, 2025
0ac283e
fix: when reply happens don't send mention notification
ahmedGamalEllabban Dec 14, 2025
9662089
feat: Enable CronModule, implement bulk hashtag trend calculation, an…
karimzakzouk Dec 15, 2025
ad571d0
fix: Prevent infinite hashtag trend recalculations by checking for an…
karimzakzouk Dec 15, 2025
eed1a29
feat: Add Redis-based locking to prevent duplicate hashtag trend reca…
karimzakzouk Dec 15, 2025
ce9a322
perf: Implement bulk hashtag trend calculation and integrate it into …
karimzakzouk Dec 15, 2025
5c04232
feat: Introduce a cooldown for hashtag trend recalculation, limit pos…
karimzakzouk Dec 15, 2025
8f9c039
Remove explicit ordering and limiting from post and repost CTEs.
karimzakzouk Dec 15, 2025
e62be40
fix: return array in replies instead of one
YousefAref72 Dec 15, 2025
b752f2e
refactor: Optimize personalized post retrieval by limiting dataset ea…
karimzakzouk Dec 15, 2025
4b03089
Merge pull request #171 from SWEProject25/bugfix/posts-enrichment
mohamed-sameh-albaz Dec 15, 2025
6f3e225
Merge pull request #170 from SWEProject25/fix/notification-response-data
ahmedGamalEllabban Dec 15, 2025
37eb881
Merge pull request #172 from SWEProject25/testing-dev
Salah3060 Dec 15, 2025
64e90d6
fix(trends): move on to redis for trends caching
mohamed-sameh-albaz Dec 15, 2025
7748c72
chore(packages): update dependencies
mohamed-sameh-albaz Dec 15, 2025
75fb3ca
Merge branch 'dev' of https://github.com/SWEProject25/backend into fi…
mohamed-sameh-albaz Dec 15, 2025
949f82f
copilot review changes
mohamed-sameh-albaz Dec 15, 2025
e36ed7c
Merge pull request #173 from SWEProject25/fix/personalized-trends
OmarNabil005 Dec 15, 2025
fe3ee1f
feat: Batch personalized trend synchronization, refactor hashtag tren…
karimzakzouk Dec 15, 2025
81fbf05
feat: Implement Redis caching for conversation user data and correct …
karimzakzouk Dec 15, 2025
6d5a1a4
unit testing +10%
OmarNabil005 Dec 15, 2025
0e42760
Merge pull request #174 from SWEProject25/fixed-dev
OmarNabil005 Dec 15, 2025
b60e0c5
Merge pull request #175 from SWEProject25/feature/unit-testing
OmarNabil005 Dec 15, 2025
5174a2d
fix(oauth): ios google oauth redirect
mohamed-sameh-albaz Dec 15, 2025
cee0cba
test(auth): add remaining unit testing
mohamed-sameh-albaz Dec 15, 2025
65f1df5
Merge branch 'dev' of https://github.com/SWEProject25/backend into fi…
mohamed-sameh-albaz Dec 15, 2025
598a5be
Merge pull request #176 from SWEProject25/fix/personalized-trends
Salah3060 Dec 15, 2025
9910df8
fix: don't notify user mention if it's included in quote
ahmedGamalEllabban Dec 15, 2025
930ea37
fix: return original post data with replies in api
ahmedGamalEllabban Dec 15, 2025
f6479eb
Merge pull request #177 from SWEProject25/fix/notification
ahmedGamalEllabban Dec 15, 2025
1112421
fixed
OmarNabil005 Dec 15, 2025
e5e9674
Merge pull request #178 from SWEProject25/fix/potdId-not-found
OmarNabil005 Dec 15, 2025
9a5f627
fixed reliability issues
OmarNabil005 Dec 15, 2025
958faa5
fixed ReDoS threat
OmarNabil005 Dec 15, 2025
7d732fa
add controller spec and fix missing metadata
YousefAref72 Dec 15, 2025
34c6793
fixed some maintainability issues
OmarNabil005 Dec 15, 2025
7f893d9
Update private-trigger.yml
karimfaridz Dec 15, 2025
f94e08e
Merge pull request #179 from SWEProject25/fix/SonarQube-issues
OmarNabil005 Dec 15, 2025
18ea7e4
Fix Performance Issue
Dec 15, 2025
ec15ebe
Merge pull request #181 from SWEProject25/Fix/timeline-performance
ahmedGamalEllabban Dec 15, 2025
115ef06
Merge branch 'dev' of https://github.com/SWEProject25/backend into bu…
YousefAref72 Dec 15, 2025
a2b7523
fix merge conflict
YousefAref72 Dec 15, 2025
15a1f33
Merge branch 'dev' of https://github.com/SWEProject25/backend into bu…
YousefAref72 Dec 15, 2025
b4ace2f
fixed more maintainability issues
OmarNabil005 Dec 15, 2025
da66931
Merge pull request #180 from SWEProject25/bugfix/add-missing-post-meta
OmarNabil005 Dec 15, 2025
689c58d
Merge branch 'dev' into fix/SonarQube-issues-v2
OmarNabil005 Dec 15, 2025
88b570e
Merge pull request #182 from SWEProject25/fix/SonarQube-issues-v2
YousefAref72 Dec 15, 2025
cf2e98b
fixed unit tests
OmarNabil005 Dec 15, 2025
3908df9
removed mistake
OmarNabil005 Dec 15, 2025
939eaae
fix(trends): categorize caching
mohamed-sameh-albaz Dec 15, 2025
4b47f54
Merge pull request #184 from SWEProject25/fix/trends
OmarNabil005 Dec 15, 2025
efb1050
Merge pull request #183 from SWEProject25/fix/unit-tests-v3
OmarNabil005 Dec 15, 2025
655498c
fix(username): change validations for username
mohamed-sameh-albaz Dec 15, 2025
01b4a70
Update src/user/dto/update-user.dto.ts
mohamed-sameh-albaz Dec 15, 2025
44faa64
Update src/user/dto/update-username.dto.ts
mohamed-sameh-albaz Dec 15, 2025
2a72a52
Merge pull request #185 from SWEProject25/fix/trends
mohamed-sameh-albaz Dec 15, 2025
f8ab64b
refactor: optimize hashtag handling and media creation in post transa…
YousefAref72 Dec 15, 2025
0286373
fix: add missing test and enhance coverage +10%
ahmedGamalEllabban Dec 15, 2025
5c6b8f1
Merge pull request #187 from SWEProject25/test/enhance-coverage
ahmedGamalEllabban Dec 15, 2025
e88d225
Merge pull request #186 from SWEProject25/bugfix/post-transaction-tim…
YousefAref72 Dec 15, 2025
46a01d2
Fix perfromace issue
Dec 15, 2025
55f3f85
Fix perfromace issue
Dec 15, 2025
ee6ecee
Merge pull request #188 from SWEProject25/Fix/timeline-performance
OmarNabil005 Dec 15, 2025
967031a
fix
Dec 15, 2025
cf0042f
Merge pull request #189 from SWEProject25/Fix/timeline-performance
Salah3060 Dec 15, 2025
72e3d9c
fix
OmarNabil005 Dec 16, 2025
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
52 changes: 52 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Dependencies
node_modules
npm-debug.log
yarn-error.log

# Build outputs
dist
build
.next

# Environment files
.env
.env.local
.env.development.local
.env.test.local
.env.production.local

# Testing
coverage
.nyc_output
test
*.spec.ts
*.test.ts
jest-e2e.json

# Git
.git
.gitignore

# IDE
.vscode
.idea
*.swp
*.swo
*.log

# OS
.DS_Store
Thumbs.db

# Misc
README.md
.prettierrc
.eslintrc.js
eslint.config.mjs
.editorconfig

# CI/CD
.github

# Scripts
run.sh
69 changes: 69 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
NODE_ENV=dev
DATABASE_URL="postgresql://{USER}:{PASSWORD}@localhost:5432/hanckers?schema=public"

REDIS_HOST=172.23.30.13
REDIS_PORT=6379

PORT=5000
APP_VERSION=v1.0
PROD_URL=https://hankers-backend.myaddr.tools

# AUTH
JWT_SECRET=our-secret-jwt-key
JWT_EXPIRES_IN=1d
IS_PUBLIC_KEY=IS_PUBLIC

#GOOGLE OAUTH
GOOGLE_CLIENT_ID=google-client-id
GOOGLE_SECRET_KEY=google-secret-key
GOOGLE_CALLBACK_URL=http://localhost:5000/google/redirect
GOOGLE_CALLBACK_URL_PROD={PROD_URL}/google/redirect

#GITHUB OAUTH LOCAL
GITHUB_CLIENT_ID=github-client-id
GITHUB_SECRET_KEY=github-secret-key
GITHUB_CALLBACK_URL=http://localhost:5000/github/redirect

#GITHUB OAUTH PROD
GITHUB_CLIENT_ID_PROD=github-client-id-prod
GITHUB_SECRET_KEY_PROD=github-secret-key-prod
GITHUB_CALLBACK_URL_PROD={PROD_URL}/api/v1.0/auth/google/redirect

# RECAPTCHA
GOOGLE_RECAPTCHA_SITE_KEY_V2=site-key2
GOOGLE_RECAPTCHA_SECRET_KEY_V2=secret-key2


#API_CONSUMERS
FRONTEND_URL=http://localhost:3000
FRONTEND_URL_PROD=https://hankers-frontend.myaddr.tools

# EMAIL CONFIGURATION
# Try AWS SES first, automatically fallback to Resend if it fails
# Set to "false" to skip AWS SES entirely and use only Resend (useful when AWS is in sandbox)
EMAIL_USE_AWS_FIRST=true

# AWS SES Email (Primary)
AWS_SES_SMTP_HOST=email-smtp.us-east-1.amazonaws.com
AWS_SES_SMTP_PORT=587
AWS_SES_SMTP_USERNAME=your-aws-ses-smtp-username
AWS_SES_SMTP_PASSWORD=your-aws-ses-smtp-password
AWS_SES_FROM_EMAIL=noreply@hankers.tech
AWS_SES_REGION=us-east-1

# Resend Email (Fallback - Free 3000 emails/month as backup)
RESEND_API_KEY=re_your_api_key_here
RESEND_FROM_EMAIL=noreply@hankers.tech

# Azure Email (Legacy - optional)
AZURE_EMAIL_CONNECTION_STRING=endpoint=https://your-acs.communication.azure.com/;accesskey=your-key
AZURE_EMAIL_FROM=DoNotReply@your-domain.azurecomm.net

# Legacy email configs (deprecated, can be removed)
SENDGRID_API_KEY=apikey
SENDGRID_FROM_EMAIL=hankers@gmail.com

AZURE_STORAGE_CONNECTION_STRING=azure-storage

# AI INTEGRATION
GROQ_API_KEY=gsk_your_groq_api_key_here
53 changes: 53 additions & 0 deletions .github/workflows/private-trigger.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Trigger Docker Build
on:
push:
branches:
- main
- dev
pull_request:
branches:
- main
- dev
workflow_dispatch:

jobs:
test-and-build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '20' # Adjust version as needed

- name: Install dependencies
run: npm install

- name: Run tests
run: npm test
continue-on-error: true # Continue even if tests fail

- name: Build project
run: npm run build

trigger-public-workflow:
needs: test-and-build
if: github.event_name != 'pull_request'
runs-on: ubuntu-latest
steps:
- name: Trigger public repo workflow
run: |
curl -X POST \
-H "Accept: application/vnd.github.v3+json" \
-H "Authorization: token ${{ secrets.PAT_GITHUB }}" \
https://api.github.com/repos/karimfaridz/runner/dispatches \
-d '{
"event_type": "trigger-build",
"client_payload": {
"owner_name": "${{ github.repository_owner }}",
"repo_name": "${{ github.event.repository.name }}",
"branch": "${{ github.ref_name }}"
}
}'
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ lerna-debug.log*
.temp
.tmp

# Documentation
docs/

# Runtime data
pids
*.pid
Expand All @@ -58,3 +61,4 @@ report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

/generated/prisma

*.rdb
5 changes: 3 additions & 2 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"singleQuote": true,
"trailingComma": "all"
}
"trailingComma": "all",
"printWidth": 100
}
25 changes: 25 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
FROM node:20-alpine AS builder
WORKDIR /app
# Install dependencies
COPY package*.json ./
COPY prisma ./prisma/
RUN npm ci
# Copy source and build
COPY . .
RUN npx prisma generate
RUN npm run build

# ---- Production Image ----
FROM node:20-alpine
WORKDIR /app
# Install only prod deps
COPY package*.json ./
COPY prisma ./prisma/
RUN npm ci --omit=dev
RUN npx prisma generate
# Copy build artifacts
COPY --from=builder /app/dist ./dist
# Copy email templates to match the path your code expects
COPY --from=builder /app/src/email/templates ./src/email/templates
EXPOSE 3000
CMD ["node", "dist/src/main"]
62 changes: 60 additions & 2 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,48 @@ import globals from 'globals';
import tseslint from 'typescript-eslint';

export default tseslint.config(
{
ignores: ['eslint.config.mjs'],
},
eslint.configs.recommended,
...tseslint.configs.recommendedTypeChecked,
eslintPluginPrettierRecommended,
{
languageOptions: {
globals: {
...globals.node,
...globals.jest,
},
sourceType: 'commonjs',
parserOptions: {
projectService: true,
tsconfigRootDir: import.meta.dirname,
},
},
},
{
rules: {
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-floating-promises': 'off',
'@typescript-eslint/no-unsafe-argument': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/no-unsafe-return': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/require-await': 'off',
'@typescript-eslint/no-unnecessary-type-assertion': 'off',
'@typescript-eslint/no-base-to-string': 'off',
'@typescript-eslint/no-base-case-declaration': 'off',
'@typescript-eslint/unbound-method': 'off',
'@typescript-eslint/restrict-template-expressions': 'off',
'@typescript-eslint/no-redundant-type-constituents': 'off',
'@typescript-eslint/no-unsafe-optional-chaining': 'off',
'@typescript-eslint/no-non-null-asserted-optional-chain': 'off',
'@typescript-eslint/no-constant-binary-expression': 'off',
'@typescript-eslint//no-wrapper-object-types': 'off',
},
},
{
ignores: ['eslint.config.mjs'],
},
Expand All @@ -28,7 +70,23 @@ export default tseslint.config(
rules: {
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-floating-promises': 'warn',
'@typescript-eslint/no-unsafe-argument': 'warn'
'@typescript-eslint/no-unsafe-argument': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/no-unsafe-return': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/require-await': 'off',
'@typescript-eslint/no-unnecessary-type-assertion': 'off',
'@typescript-eslint/no-base-to-string': 'off',
'@typescript-eslint/unbound-method': 'off',
'@typescript-eslint/restrict-template-expressions': 'off',
'prettier/prettier': [
'error',
{
endOfLine: 'auto',
},
],
},
},
);
);
Loading
Loading