├── .env.example
├── .eslintignore
├── .eslintrc.json
├── .github
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── HACKING.md
├── ISSUE_TEMPLATE
│ ├── BUG.yml
│ ├── DESIGN_REQUEST.yml
│ └── FEATURE_REQUEST.yml
├── PULL_REQUEST_TEMPLATE
│ ├── PULL_REQUEST.md
│ └── pull_request_template.md
├── TWITTER.md
└── img
│ ├── shoutify-app-preview-framed.png
│ ├── shoutify-home-preview-framed.png
│ ├── shoutify-logo-icon-24-filled.svg
│ ├── shoutify-logo-icon-24.svg
│ ├── twitter_app_info.png
│ ├── twitter_app_permissions.png
│ ├── twitter_app_type.png
│ ├── twitter_keys_tokens.png
│ ├── twitter_name_app.png
│ └── twitter_oauth_cred.png
├── .gitignore
├── .husky
├── .gitignore
└── pre-commit
├── .npmrc
├── .nvmrc
├── .prettierignore
├── .prettierrc.json
├── .storybook
├── main.js
└── preview.js
├── LICENSE
├── README.md
├── commitlint.config.js
├── next-env.d.ts
├── next.config.mjs
├── package-lock.json
├── package.json
├── postcss.config.cjs
├── postcss.config.js
├── prisma
├── migrations
│ ├── 20220910225423_init
│ │ └── migration.sql
│ └── migration_lock.toml
└── schema.prisma
├── public
├── assets
│ └── shoutify-preview.png
└── favicon.ico
├── src
├── components
│ ├── atoms
│ │ ├── Button.tsx
│ │ ├── Card.tsx
│ │ ├── Container.tsx
│ │ ├── DateTime.tsx
│ │ └── Icon.tsx
│ ├── composer
│ │ ├── Composer.tsx
│ │ ├── index.ts
│ │ └── inspirationalQuotes.ts
│ └── nav
│ │ ├── AppNav.tsx
│ │ ├── DynamicNav.tsx
│ │ ├── MobileNav.tsx
│ │ ├── MobileNavItem.tsx
│ │ └── NavItem.tsx
├── env
│ ├── client.mjs
│ ├── schema.mjs
│ └── server.mjs
├── hooks
│ └── useTailWindResponsive.ts
├── layouts
│ └── AppLayout.tsx
├── pages
│ ├── _app.tsx
│ ├── api
│ │ ├── auth
│ │ │ └── [...nextauth].ts
│ │ ├── examples.ts
│ │ ├── restricted.ts
│ │ └── trpc
│ │ │ └── [trpc].ts
│ ├── app
│ │ └── index.tsx
│ └── index.tsx
├── server
│ ├── common
│ │ └── get-server-auth-session.ts
│ ├── db
│ │ └── client.ts
│ └── router
│ │ ├── context.ts
│ │ ├── example.ts
│ │ ├── index.ts
│ │ ├── protected-example-router.ts
│ │ └── protected-router.ts
├── stories
│ ├── Introduction.stories.mdx
│ ├── assets
│ │ ├── discussion.svg
│ │ ├── storybook-logo.svg
│ │ └── storybook.css
│ ├── atoms
│ │ └── Button.stories.tsx
│ ├── nav
│ │ └── AppNav.stories.tsx
│ └── pages
│ │ └── Home.stories.tsx
├── styles
│ ├── globals.css
│ └── styles.ts
├── types
│ ├── NextExtensions.ts
│ └── next-auth.d.ts
└── utils
│ ├── NextUtils.tsx
│ └── trpc.ts
├── tailwind.config.cjs
└── tsconfig.json
/.env.example:
--------------------------------------------------------------------------------
1 | # Note that not all variables here might be in use for your selected configuration
2 |
3 | # Prisma
4 | DATABASE_URL=file:./db.sqlite
5 |
6 | # Next Auth
7 | NEXTAUTH_SECRET=
8 | NEXTAUTH_URL=http://localhost:3000
9 |
10 | # Twitter
11 | TWITTER_CLIENT_ID=
12 | TWITTER_CLIENT_SECRET=
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | *.md
2 | *.css
3 | .storybook/
4 | *.cjs
5 | *.config.js
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "parser": "@typescript-eslint/parser",
3 | "parserOptions": {
4 | "project": "./tsconfig.json"
5 | },
6 | "plugins": ["@typescript-eslint"],
7 | "extends": [
8 | "next/core-web-vitals",
9 | "plugin:@typescript-eslint/recommended",
10 | "prettier"
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/.github/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | In the interest of fostering an open and welcoming environment, we as
6 | contributors and maintainers pledge to making participation in our project and
7 | our community a harassment-free experience for everyone, regardless of age, body
8 | size, disability, ethnicity, sex characteristics, gender identity and
9 | expression, level of experience, education, socio-economic status, nationality,
10 | personal appearance, race, religion, or sexual identity and orientation.
11 |
12 | ## Our Standards
13 |
14 | Examples of behavior that contributes to creating a positive environment
15 | include:
16 |
17 | - Using welcoming and inclusive language
18 | - Being respectful of differing viewpoints and experiences
19 | - Gracefully accepting constructive criticism
20 | - Focusing on what is best for the community
21 | - Showing empathy towards other community members
22 |
23 | Examples of unacceptable behavior by participants include:
24 |
25 | - The use of sexualized language or imagery and unwelcome sexual attention or
26 | advances
27 | - Trolling, insulting/derogatory comments, and personal or political attacks
28 | - Public or private harassment
29 | - Publishing others' private information, such as a physical or electronic
30 | address, without explicit permission
31 | - Other conduct which could reasonably be considered inappropriate in a
32 | professional setting
33 |
34 | ## Our Responsibilities
35 |
36 | Project maintainers are responsible for clarifying the standards of acceptable
37 | behavior and are expected to take appropriate and fair corrective action in
38 | response to any instances of unacceptable behavior.
39 |
40 | Project maintainers have the right and responsibility to remove, edit, or reject
41 | comments, commits, code, wiki edits, issues, and other contributions that are
42 | not aligned to this Code of Conduct, or to ban temporarily or permanently any
43 | contributor for other behaviors that they deem inappropriate, threatening,
44 | offensive, or harmful.
45 |
46 | ## Scope
47 |
48 | This Code of Conduct applies both within project spaces and in public spaces
49 | when an individual is representing the project or its community. Examples of
50 | representing a project or community include using an official project e-mail
51 | address, posting via an official social media account, or acting as an appointed
52 | representative at an online or offline event. Representation of a project may be
53 | further defined and clarified by project maintainers.
54 |
55 | ## Enforcement
56 |
57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
58 | reported by contacting the project team at community-partner@circleci.com. All
59 | complaints will be reviewed and investigated and will result in a response that
60 | is deemed necessary and appropriate to the circumstances. The project team is
61 | obligated to maintain confidentiality with regard to the reporter of an
62 | incident. Further details of specific enforcement policies may be posted
63 | separately.
64 |
65 | Project maintainers who do not follow or enforce the Code of Conduct in good
66 | faith may face temporary or permanent repercussions as determined by other
67 | members of the project's leadership.
68 |
69 | ## Attribution
70 |
71 | This Code of Conduct is adapted from the [Contributor Covenant][homepage],
72 | version 1.4, available at
73 | https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
74 |
75 | [homepage]: https://www.contributor-covenant.org
76 |
77 | For answers to common questions about this code of conduct, see
78 | https://www.contributor-covenant.org/faq
79 |
--------------------------------------------------------------------------------
/.github/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing to Shoutify
2 |
3 | Thank you for your interest in becoming a contributor to Shoutify. We welcome
4 | all contributions, no matter how large or small. Please take a moment to review
5 | this document in order to make effective contributions.
6 |
7 | - [Have a Question?](#question)
8 | - [Issues and Bugs](#issue)
9 | - [Feature Requests](#feature)
10 | - [Contributing](#contribute)
11 | - [Submission Guidelines](#guidelines)
12 | - [Release Process](#release)
13 | - [FAQ](#FAQ)
14 |
15 | ## Have a Question?
16 |
17 | Have a question about Shoutify? Ask questions or feel free to talk about
18 | anything Shoutify related in our
19 | [GitHub Discussions forum](https://github.com/TechSquidTV/Shoutify/discussions).
20 |
21 | ## Discover a Bug?
22 |
23 | Something not working as expected? Let's see if we can work together to get it
24 | resolved. If you believe you have discovered a bug, please open an issue on the
25 | GitHub repository and select the "Bug Report" template.
26 |
27 | [Open an issue](https://github.com/TechSquidTV/Shoutify/issues/new/choose)
28 |
29 | ## Missing Feature?
30 |
31 | Would you like to see a new feature added to Shoutify? Let's discuss it! All
32 | features for Shoutify should begin as an Issue on the GitHub repository. Select
33 | the "Feature Request" issue template and engage with the community to come to a
34 | collective solution to the feature request.
35 |
36 | [Create a Feature Request](https://github.com/TechSquidTV/Shoutify/issues/new/choose)
37 |
38 | ## Contributing
39 |
40 | Want to contribute to Shoutify? Great! We welcome all contributions no matter
41 | how large or small. Please begin by taking a look at the open issues and get
42 | involved in the conversation. We would be happy to assign you to an issue and
43 | help you get started.
44 |
45 | Get started by reading the [HACKING.md](./HACKING.md) document, and come back here when you're ready to submit.
46 |
47 | ### Submission Guidelines
48 |
49 | #### Commit Conventions
50 |
51 | This project strictly adheres to the
52 | [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/)
53 | specification for creating human readable commit messages with appropriate
54 | automation capabilities, such as changelog generation.
55 |
56 | ##### Commit Message Format
57 |
58 | Each commit message consists of a header, a body and a footer. The header has a
59 | special format that includes a type, a scope and a subject:
60 |
61 | ```text
62 | (optional ):
63 |
64 |
65 |
66 |