├── .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 |