diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 85cc4b2..0000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '[BUG] ' -labels: bug -assignees: '' ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Additional context** -Add any other context about the problem here. \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..c9684d1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,70 @@ +name: Bug report +description: Create a report to help us improve +title: '[BUG] ' +labels: bug +body: + - type: input + id: Platform + attributes: + label: Platform + description: Please enter the platform on which you encountered the bug. + placeholder: e.g. Windows 11, Ubuntu 14.04 + validations: + required: true + - type: input + id: Browser + attributes: + label: Browser + description: Please enter the browser on which you encountered the bug. + placeholder: e.g. Chrome 137, Firefox 137, Safari 17 + validations: + required: true + - type: textarea + id: current-behavior + attributes: + label: Current Behavior + description: A concise description of what you're experiencing. + validations: + required: true + - type: textarea + id: expected-behavior + attributes: + label: Expected Behavior + description: A concise description of what you expected to happen. + validations: + required: false + - type: dropdown + id: recurrence-probability + attributes: + label: Recurrence Probability + description: How often does this bug occur? + options: + - Always + - Usually + - Sometimes + - Seldom + default: 0 + validations: + required: true + - type: textarea + id: steps-to-reproduce + attributes: + label: Steps To Reproduce + description: Steps to reproduce the behavior. + placeholder: | + 1. Go to '...' + 2. Click on '....' + 3. Scroll down to '....' + 4. See error + validations: + required: true + - type: textarea + id: additional-context + attributes: + label: Anything else? + description: | + Links? References? Anything that will give us more context about the issue you are encountering! + + Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. + validations: + required: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 1d528f2..0000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: '[FEATURE] ' -labels: enhancement -assignees: '' ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..49a00eb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,42 @@ +name: Feature request +description: Suggest an idea for OpenCut +title: '[FEATURE] ' +labels: enhancement +body: + - type: markdown + attributes: + value: Please make sure that no duplicated issues has already been delivered. + - type: textarea + id: problem + attributes: + label: Problem + placeholder: Is your feature request related to a problem? Please describe. + description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + validations: + required: true + - type: textarea + id: solution + attributes: + label: Solution + placeholder: Describe the solution you'd like. + description: A clear and concise description of what you want to happen. + validations: + required: true + - type: textarea + id: alternative + attributes: + label: Alternative + placeholder: Describe alternatives you've considered. + description: A clear and concise description of any alternative solutions or features you've considered. + validations: + required: true + - type: textarea + id: additional-context + attributes: + label: Anything else? + description: | + Links? References? Anything that will give us more context about the issue you are encountering! + + Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. + validations: + required: false \ No newline at end of file diff --git a/.github/workflows/bun-ci.yml b/.github/workflows/bun-ci.yml index 4df6212..34b6d51 100644 --- a/.github/workflows/bun-ci.yml +++ b/.github/workflows/bun-ci.yml @@ -31,13 +31,13 @@ jobs: - name: Install Bun uses: oven-sh/setup-bun@735343b667d3e6f658f44d0eca948eb6282f2b76 with: - bun-version: 1.2.2 + bun-version: 1.2.17 - name: Cache Bun modules uses: actions/cache@v4 with: path: ~/.bun/install/cache - key: ${{ runner.os }}-bun-${{ hashFiles('apps/web/bun.lock') }} + key: ${{ runner.os }}-bun-1.2.17-${{ hashFiles('apps/web/bun.lock') }} - name: Install dependencies working-directory: apps/web diff --git a/.gitignore b/.gitignore index fe0f362..7864700 100644 --- a/.gitignore +++ b/.gitignore @@ -27,4 +27,8 @@ node_modules .cursorignore .turbo -*.env \ No newline at end of file +*.env + +# cursor + +.cursor/ \ No newline at end of file diff --git a/README.md b/README.md index 615dbcd..ca821e6 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,16 @@ Before you begin, ensure you have the following installed on your system: Navigate into the web app's directory and create a `.env` file from the example: ```bash cd apps/web - cp .env.example .env + + + # Unix/Linux/Mac + cp .env.example .env.local + + # Windows Command Prompt + copy .env.example .env.local + + # Windows PowerShell + Copy-Item .env.example .env.local ``` *The default values in the `.env` file should work for local development.* @@ -94,13 +103,13 @@ Before you begin, ensure you have the following installed on your system: The application will be available at [http://localhost:3000](http://localhost:3000). -======= +--- ## Contributing Visit [CONTRIBUTING.md](.github/CONTRIBUTING.md) -======= +--- We welcome contributions! Please see our [Contributing Guide](.github/CONTRIBUTING.md) for detailed setup instructions and development guidelines. Quick start for contributors: diff --git a/apps/web/Dockerfile b/apps/web/Dockerfile index 8b13ce3..46eeb10 100644 --- a/apps/web/Dockerfile +++ b/apps/web/Dockerfile @@ -19,7 +19,8 @@ COPY apps/web/ apps/web/ COPY packages/db/ packages/db/ COPY packages/auth/ packages/auth/ -ENV NEXT_TELEMETRY_DISABLED=1 +ENV NODE_ENV production +ENV NEXT_TELEMETRY_DISABLED 1 WORKDIR /app/apps/web RUN bun run build @@ -28,7 +29,8 @@ RUN bun run build FROM base AS runner WORKDIR /app -ENV NEXT_TELEMETRY_DISABLED=1 +ENV NODE_ENV production +ENV NEXT_TELEMETRY_DISABLED 1 RUN addgroup --system --gid 1001 nodejs RUN adduser --system --uid 1001 nextjs diff --git a/apps/web/public/browserconfig.xml b/apps/web/public/browserconfig.xml new file mode 100644 index 0000000..39060b2 --- /dev/null +++ b/apps/web/public/browserconfig.xml @@ -0,0 +1,11 @@ + + + + + + + + #ffffff + + + \ No newline at end of file diff --git a/apps/web/public/favicon.ico b/apps/web/public/favicon.ico new file mode 100644 index 0000000..9b2cba8 Binary files /dev/null and b/apps/web/public/favicon.ico differ diff --git a/apps/web/public/frame.svg b/apps/web/public/frame.svg new file mode 100644 index 0000000..4dac68e --- /dev/null +++ b/apps/web/public/frame.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/apps/web/public/icons/android-icon-144x144.png b/apps/web/public/icons/android-icon-144x144.png new file mode 100644 index 0000000..7320ece Binary files /dev/null and b/apps/web/public/icons/android-icon-144x144.png differ diff --git a/apps/web/public/icons/android-icon-192x192.png b/apps/web/public/icons/android-icon-192x192.png new file mode 100644 index 0000000..f534f42 Binary files /dev/null and b/apps/web/public/icons/android-icon-192x192.png differ diff --git a/apps/web/public/icons/android-icon-36x36.png b/apps/web/public/icons/android-icon-36x36.png new file mode 100644 index 0000000..6b8db02 Binary files /dev/null and b/apps/web/public/icons/android-icon-36x36.png differ diff --git a/apps/web/public/icons/android-icon-48x48.png b/apps/web/public/icons/android-icon-48x48.png new file mode 100644 index 0000000..30a68fa Binary files /dev/null and b/apps/web/public/icons/android-icon-48x48.png differ diff --git a/apps/web/public/icons/android-icon-72x72.png b/apps/web/public/icons/android-icon-72x72.png new file mode 100644 index 0000000..e4019c8 Binary files /dev/null and b/apps/web/public/icons/android-icon-72x72.png differ diff --git a/apps/web/public/icons/android-icon-96x96.png b/apps/web/public/icons/android-icon-96x96.png new file mode 100644 index 0000000..85591ab Binary files /dev/null and b/apps/web/public/icons/android-icon-96x96.png differ diff --git a/apps/web/public/icons/apple-icon-114x114.png b/apps/web/public/icons/apple-icon-114x114.png new file mode 100644 index 0000000..c776e3f Binary files /dev/null and b/apps/web/public/icons/apple-icon-114x114.png differ diff --git a/apps/web/public/icons/apple-icon-120x120.png b/apps/web/public/icons/apple-icon-120x120.png new file mode 100644 index 0000000..76604df Binary files /dev/null and b/apps/web/public/icons/apple-icon-120x120.png differ diff --git a/apps/web/public/icons/apple-icon-144x144.png b/apps/web/public/icons/apple-icon-144x144.png new file mode 100644 index 0000000..7320ece Binary files /dev/null and b/apps/web/public/icons/apple-icon-144x144.png differ diff --git a/apps/web/public/icons/apple-icon-152x152.png b/apps/web/public/icons/apple-icon-152x152.png new file mode 100644 index 0000000..eb5ef0d Binary files /dev/null and b/apps/web/public/icons/apple-icon-152x152.png differ diff --git a/apps/web/public/icons/apple-icon-180x180.png b/apps/web/public/icons/apple-icon-180x180.png new file mode 100644 index 0000000..b90e62f Binary files /dev/null and b/apps/web/public/icons/apple-icon-180x180.png differ diff --git a/apps/web/public/icons/apple-icon-57x57.png b/apps/web/public/icons/apple-icon-57x57.png new file mode 100644 index 0000000..7cfb2e5 Binary files /dev/null and b/apps/web/public/icons/apple-icon-57x57.png differ diff --git a/apps/web/public/icons/apple-icon-60x60.png b/apps/web/public/icons/apple-icon-60x60.png new file mode 100644 index 0000000..1d90a37 Binary files /dev/null and b/apps/web/public/icons/apple-icon-60x60.png differ diff --git a/apps/web/public/icons/apple-icon-72x72.png b/apps/web/public/icons/apple-icon-72x72.png new file mode 100644 index 0000000..e4019c8 Binary files /dev/null and b/apps/web/public/icons/apple-icon-72x72.png differ diff --git a/apps/web/public/icons/apple-icon-76x76.png b/apps/web/public/icons/apple-icon-76x76.png new file mode 100644 index 0000000..34575f4 Binary files /dev/null and b/apps/web/public/icons/apple-icon-76x76.png differ diff --git a/apps/web/public/icons/favicon-16x16.png b/apps/web/public/icons/favicon-16x16.png new file mode 100644 index 0000000..96db3a2 Binary files /dev/null and b/apps/web/public/icons/favicon-16x16.png differ diff --git a/apps/web/public/icons/favicon-32x32.png b/apps/web/public/icons/favicon-32x32.png new file mode 100644 index 0000000..f8f589d Binary files /dev/null and b/apps/web/public/icons/favicon-32x32.png differ diff --git a/apps/web/public/icons/favicon-96x96.png b/apps/web/public/icons/favicon-96x96.png new file mode 100644 index 0000000..85591ab Binary files /dev/null and b/apps/web/public/icons/favicon-96x96.png differ diff --git a/apps/web/public/icons/ms-icon-144x144.png b/apps/web/public/icons/ms-icon-144x144.png new file mode 100644 index 0000000..7320ece Binary files /dev/null and b/apps/web/public/icons/ms-icon-144x144.png differ diff --git a/apps/web/public/icons/ms-icon-150x150.png b/apps/web/public/icons/ms-icon-150x150.png new file mode 100644 index 0000000..248ef48 Binary files /dev/null and b/apps/web/public/icons/ms-icon-150x150.png differ diff --git a/apps/web/public/icons/ms-icon-310x310.png b/apps/web/public/icons/ms-icon-310x310.png new file mode 100644 index 0000000..950a3d6 Binary files /dev/null and b/apps/web/public/icons/ms-icon-310x310.png differ diff --git a/apps/web/public/icons/ms-icon-70x70.png b/apps/web/public/icons/ms-icon-70x70.png new file mode 100644 index 0000000..7b9c269 Binary files /dev/null and b/apps/web/public/icons/ms-icon-70x70.png differ diff --git a/apps/web/public/landing-page-bg.png b/apps/web/public/landing-page-bg.png new file mode 100644 index 0000000..4f87394 Binary files /dev/null and b/apps/web/public/landing-page-bg.png differ diff --git a/apps/web/public/logo.svg b/apps/web/public/logo.svg new file mode 100644 index 0000000..f4079a5 --- /dev/null +++ b/apps/web/public/logo.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/apps/web/public/manifest.json b/apps/web/public/manifest.json new file mode 100644 index 0000000..fcbfad5 --- /dev/null +++ b/apps/web/public/manifest.json @@ -0,0 +1,44 @@ +{ + "name": "OpenCut", + "description": "A simple but powerful video editor that gets the job done. In your browser.", + "display": "standalone", + "start_url": "/", + "icons": [ + { + "src": "/icons/android-icon-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "/icons/android-icon-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "/icons/android-icon-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "/icons/android-icon-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "/icons/android-icon-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "/icons/android-icon-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ] +} \ No newline at end of file diff --git a/apps/web/src/app/contributors/page.tsx b/apps/web/src/app/contributors/page.tsx index f5fa075..67957c3 100644 --- a/apps/web/src/app/contributors/page.tsx +++ b/apps/web/src/app/contributors/page.tsx @@ -6,6 +6,7 @@ import { Button } from "@/components/ui/button"; import { ExternalLink } from "lucide-react"; import Link from "next/link"; import { GithubIcon } from "@/components/icons"; +import { Badge } from "@/components/ui/badge"; export const metadata: Metadata = { title: "Contributors - OpenCut", @@ -49,7 +50,7 @@ async function getContributors(): Promise { const contributors = await response.json(); const filteredContributors = contributors.filter( - (contributor: any) => contributor.type === "User" + (contributor: Contributor) => contributor.type === "User" ); return filteredContributors; @@ -61,8 +62,8 @@ async function getContributors(): Promise { export default async function ContributorsPage() { const contributors = await getContributors(); - const topContributor = contributors[0]; - const otherContributors = contributors.slice(1); + const topContributors = contributors.slice(0, 2); + const otherContributors = contributors.slice(2); return (
@@ -77,10 +78,10 @@ export default async function ContributorsPage() {
-
+ Open Source -
+

Contributors

@@ -105,54 +106,59 @@ export default async function ContributorsPage() {
- {topContributor && ( + {topContributors.length > 0 && (

- Top Contributor + Top Contributors

Leading the way in contributions

- -
-
- - -
- - - - {topContributor.login.charAt(0).toUpperCase()} - - -
- 1 -
-
-

- {topContributor.login} -

-
- - {topContributor.contributions} - - contributions -
-
-
-
- +
+ {topContributors.map((contributor, index) => ( + +
+
+ + +
+ + + + {contributor.login.charAt(0).toUpperCase()} + + +
+ {index + 1} +
+
+

+ {contributor.login} +

+
+ + {contributor.contributions} + + contributions +
+
+
+
+ + ))} +
)} @@ -167,7 +173,7 @@ export default async function ContributorsPage() {

-
+
{otherContributors.map((contributor, index) => ( -
- +
+ +