├── public ├── 404.webp ├── favicon.ico ├── robots.txt └── vercel.svg ├── postcss.config.js ├── renovate.json ├── src ├── utils │ ├── urlNormalize.ts │ ├── usernameGenerator.ts │ ├── copyLink.ts │ ├── share.ts │ ├── handleTabChanges.ts │ └── postDate.ts ├── types │ ├── DataMessage.d.ts │ ├── Chats.d.ts │ ├── next-auth.d.ts │ ├── user.d.ts │ ├── post.d.ts │ └── State.d.ts ├── pages │ ├── _document.tsx │ ├── api │ │ ├── search-user.ts │ │ └── auth │ │ │ └── [...nextauth].ts │ ├── 404.tsx │ ├── 500.tsx │ ├── create.tsx │ ├── _app.tsx │ ├── post │ │ └── [id] │ │ │ └── edit.tsx │ ├── auth │ │ └── signin.tsx │ └── index.tsx ├── components │ ├── Notifications │ │ ├── Empty.tsx │ │ └── NotificationUser.tsx │ ├── Logo │ │ └── Logo.tsx │ ├── Comments │ │ ├── Empty.tsx │ │ ├── Comment.tsx │ │ └── Forms.tsx │ ├── Post │ │ ├── Image.tsx │ │ ├── Likes.tsx │ │ ├── Form.tsx │ │ ├── PostInfo.tsx │ │ ├── CreatedTime.tsx │ │ ├── Author.tsx │ │ ├── index.tsx │ │ ├── PreviewLargeScreen.tsx │ │ └── ActionButton.tsx │ ├── User │ │ ├── Statistic │ │ │ ├── Desktop.tsx │ │ │ ├── Mobile.tsx │ │ │ └── Statistic.tsx │ │ ├── Info │ │ │ └── Info.tsx │ │ └── Tab │ │ │ └── Tab.tsx │ ├── Header │ │ ├── PostHeader.tsx │ │ ├── NavHeader.tsx │ │ └── MainHeader.tsx │ ├── Footer │ │ └── index.tsx │ ├── Messages │ │ ├── EmptyMessages │ │ │ └── EmptyMessages.tsx │ │ ├── Chats │ │ │ ├── Header │ │ │ │ └── Header.tsx │ │ │ └── Chats.tsx │ │ ├── Users │ │ │ ├── Header │ │ │ │ └── UserHeader.tsx │ │ │ └── UsersChat.tsx │ │ └── Form │ │ │ └── ChatForm.tsx │ ├── Navigation │ │ ├── ExtraMenuBtn.tsx │ │ ├── NavLink.tsx │ │ ├── NavItem.tsx │ │ ├── Sidebar.tsx │ │ └── ExtraMenus.tsx │ ├── Suggestions │ │ ├── User.tsx │ │ ├── SuggestionMobile.tsx │ │ └── Suggestions.tsx │ ├── Captions │ │ ├── TextArea.tsx │ │ └── Captions.tsx │ ├── ImageCropper │ │ └── ImageCropper.tsx │ ├── Modal │ │ ├── Drawer │ │ │ ├── Search │ │ │ │ ├── index.tsx │ │ │ │ ├── Form.tsx │ │ │ │ └── Results.tsx │ │ │ ├── Notifications │ │ │ │ └── NotificationsDrawer.tsx │ │ │ └── Comments.tsx │ │ ├── Menu │ │ │ └── Lists.tsx │ │ ├── Feed.tsx │ │ ├── Users │ │ │ └── Recommendations.tsx │ │ ├── Notifications │ │ │ └── Notifications.tsx │ │ ├── Cropper │ │ │ └── Cropper.tsx │ │ └── Report │ │ │ └── Report.tsx │ ├── FileUpload │ │ └── FileUpload.tsx │ ├── Loader │ │ └── Post.tsx │ └── Layout │ │ └── Layout.tsx ├── hooks │ ├── useClickoutside.ts │ ├── useTheme.tsx │ ├── useUser.tsx │ ├── useBlurhash.tsx │ ├── usePost.tsx │ └── useWindowResize.tsx ├── data │ └── footerLists.json ├── styles │ └── globals.css ├── config │ └── firebase.ts ├── helper │ ├── updatePost.ts │ ├── like.ts │ ├── savePost.ts │ ├── startNewMessage.ts │ ├── deletePost.ts │ ├── postActions.ts │ ├── getUser.ts │ ├── reportPost.ts │ ├── comments.ts │ ├── getMessage.ts │ ├── makePost.ts │ ├── follow.ts │ ├── imageUpload.ts │ └── getPosts.ts ├── stores │ ├── Global │ │ └── StateContext.tsx │ ├── reducerFunctions │ │ ├── reducer.ts │ │ ├── drawer.ts │ │ ├── users.ts │ │ └── Modal.ts │ ├── Drawer │ │ └── DrawerStates.tsx │ └── Modal │ │ └── ModalStatesContext.tsx └── middleware.ts ├── prettier.config.cjs ├── .eslintrc.json ├── .gitignore ├── tsconfig.json ├── .github └── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug_report.md ├── README.md ├── package.json ├── CONTRIBUTING.md ├── next.config.js └── tailwind.config.js /public/404.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wirayuda299/Instafam/HEAD/public/404.webp -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wirayuda299/Instafam/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:base" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /src/utils/urlNormalize.ts: -------------------------------------------------------------------------------- 1 | import { normalize } from "path"; 2 | export const urlNormalize = (url: string) => { 3 | return normalize(url); 4 | }; 5 | -------------------------------------------------------------------------------- /src/types/DataMessage.d.ts: -------------------------------------------------------------------------------- 1 | type DataMessage = { 2 | message: any; 3 | id: string; 4 | image: string; 5 | name: string; 6 | docId: string; 7 | }; 8 | -------------------------------------------------------------------------------- /prettier.config.cjs: -------------------------------------------------------------------------------- 1 | /** @type {import("prettier").Config} */ 2 | const config = { 3 | plugins: [require.resolve("prettier-plugin-tailwindcss")], 4 | }; 5 | 6 | module.exports = config; 7 | -------------------------------------------------------------------------------- /src/types/Chats.d.ts: -------------------------------------------------------------------------------- 1 | export type Chats = { 2 | createdAt: number; 3 | message: string; 4 | sender: { 5 | id: string; 6 | image: string; 7 | name: string; 8 | }; 9 | }; 10 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals", 3 | "rules": { 4 | "no-console": "off", 5 | "dependency-cruiser/no-orphans": "off", 6 | "dependency-cruiser/no-deprecated-core": "off", 7 | "react-hooks/exhaustive-deps": "off" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/pages/_document.tsx: -------------------------------------------------------------------------------- 1 | import { Html, Head, Main, NextScript } from "next/document"; 2 | 3 | export default function Document() { 4 | return ( 5 | 6 |
8 | 9 |10 | Be the first person to comment on this post 11 |
12 |14 | {likesCount.length > 1 ? "You " : "liked by You "} 15 | 18 | and {likesCount.length - 1} others 19 | 20 |
21 | ) : ( 22 | 23 | {likesCount.length} {likesCount.length > 1 ? "likes" : "like"} 24 | 25 | )} 26 |13 | Send private photos and messages to a friend or group 14 |
15 | 28 |29 | 404 30 |
31 |{user.name}
26 |37 | {comment?.comment} 38 |
39 |= 20 && !show ? "truncate" : "" 23 | }`} 24 | > 25 | {captions} 26 |
27 | 46 |
38 | Oops something went wrong. Try to refresh this page or
feel
39 | free to contact us if the problem presists.
40 |
34 | Share your experiences, connect with your friends and family, and 35 | discover new things on Instafam. 36 |
37 | {Object.values(providers).map((provider) => ( 38 | 56 | ))} 57 |59 | {item.message} 60 |
61 |70 | {getCreatedDate(item.createdAt)} 71 |
72 |55 | Recommendation for you 56 |
57 | 73 |No results found
34 |62 | {result.username} 63 | {result.name} 64 |
65 |