{"id":23176823,"url":"https://github.com/ryanlarge13/memories","last_synced_at":"2026-02-12T18:02:20.025Z","repository":{"id":253541491,"uuid":"843817206","full_name":"RyanLarge13/Memories","owner":"RyanLarge13","description":"Social media image sharing web app","archived":false,"fork":false,"pushed_at":"2025-02-20T17:10:08.000Z","size":554,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-10T01:06:10.712Z","etag":null,"topics":["buckets","clerk","googlestorage","nextjs","prisma"],"latest_commit_sha":null,"homepage":"https://memories-omega-gilt.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RyanLarge13.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-17T14:07:15.000Z","updated_at":"2025-02-20T17:10:11.000Z","dependencies_parsed_at":"2024-12-11T17:30:19.516Z","dependency_job_id":"3ef6bf89-b978-4973-9c1a-958b7c84d6fa","html_url":"https://github.com/RyanLarge13/Memories","commit_stats":null,"previous_names":["ryanlarge13/memories"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RyanLarge13/Memories","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RyanLarge13%2FMemories","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RyanLarge13%2FMemories/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RyanLarge13%2FMemories/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RyanLarge13%2FMemories/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RyanLarge13","download_url":"https://codeload.github.com/RyanLarge13/Memories/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RyanLarge13%2FMemories/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29375605,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T08:51:36.827Z","status":"ssl_error","status_checked_at":"2026-02-12T08:51:26.849Z","response_time":55,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["buckets","clerk","googlestorage","nextjs","prisma"],"created_at":"2024-12-18T06:19:42.664Z","updated_at":"2026-02-12T18:02:20.009Z","avatar_url":"https://github.com/RyanLarge13.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Memories\n\n\u003cimg src=\"public/assets/logo.svg\" alt=\"Logo\" /\u003e\n\n## Table Of Contents\n\n- [Features](#features)\n- [Tech Stack](#tech-stack)\n- [Getting Started](#getting-started)\n- [Prerequisites](#prerequisites)\n- [Installation](#installation)\n- [Deployment](#deployment)\n- [File Structure](#file-structure)\n- [Contributing](#contributing)\n- [License](#license)\n\nMemories is an Instagram-like web application where users can upload, view, and share their memories. The app is built using Next.js with React, server-actions, Prisma ORM for database management, Google Cloud Storage for file uploads, and Clerk for user authentication. It leverages React Suspense for data fetching and caching static data through Next.js pre-rendering techniques to ensure a fast and seamless user experience.\n\n\u003cimg src=\"public/assets/Mobile_Screen_Shot.jpg\"  alt=\"mobile\" /\u003e\n\n## Features\n\n- **User Authentication**: Users can sign up, log in, and manage their accounts using Clerk.\n- **Memory Uploads**: Users can upload images along with titles, descriptions, locations, and dates.\n- **Image Storage**: Uploaded images are stored in a Google Cloud Storage bucket.\n- **React Suspense**: Used for efficient data fetching and improved loading states.\n- **Static Data Caching**: Pre-rendering techniques are utilized to cache static data for optimal performance.\n- **Server Actions**: Server-side logic for handling database operations and storage integration using Prisma ORM.\n- **Responsive Design**: The app is fully responsive and optimized for mobile devices.\n\n## Tech Stack\n\n- **Next.js**: A React framework for server-rendered and statically generated pages.\n- **React**: Frontend framework for building user interfaces.\n- **Server Actions**: For handling server-side logic in Next.js without requiring APIs.\n- **Prisma ORM**: Used for modeling and querying the database with a schema-based approach.\n- **Google Cloud Storage**: Stores uploaded images securely.\n- **Clerk**: Provides user authentication and session management.\n- **React Suspense**: Handles asynchronous data fetching in React components.\n- **Pre-rendering and Caching**: Ensures fast load times by caching static data during the build process.\n\n## Getting Started\n\n### Prerequisites\n\nMake sure you have the following tools installed:\n\n- Node.js (version 14 or higher)\n- npm or yarn\n- A Google Cloud account with a storage bucket set up\n- A Prisma database (PostgreSQL/MySQL/SQLite)\n- A Clerk account for authentication\n\n### Installation\n\n1. **Clone the Repository:**\n\n   ```\n   git clone https://github.com/your-username/memories.git\n   cd memories\n   ```\n\n2. **Install Dependencies:**\n\n   Using npm:\n\n   ```\n   npm install\n   ```\n\n   Or with yarn:\n\n   ```\n   yarn install\n   ```\n\n3. **Set Up Environment Variables:**\n\n   Create a `.env` file in the root of your project and add the following variables:\n\n   ```\n   #Define production enviornment\n   PROD = dev (or prod if you are deploying)\n\n   # Database connection (Prisma)\n   DATABASE_URL=\"your-database-url\"\n\n   # Google Cloud Storage\n   GOOGLE_APPLICATION_CREDENTIALS_JSON = \"your-key\"\n   GOOGLE_APPLICATION_CREDENTIALS = \"your-creds\"\n\n   # Clerk\n   NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY = \"your-key\"\n   CLERK_SECRET_KEY = \"your-key\"\n\n   ```\n\n4. **Set Up Prisma:**\n\n   Run the following command to generate Prisma client:\n\n   ```\n   npx prisma generate\n   ```\n\n   Then, run the database migrations:\n\n   ```\n   npx prisma migrate dev\n   ```\n\n5. **Run the Development Server:**\n\n   Start the server in development mode:\n\n   ```\n   npm run dev\n   ```\n\n   Or with yarn:\n\n   ```\n   yarn dev\n   ```\n\n   The app should be running at [http://localhost:3000](http://localhost:3000).\n\n### Deployment\n\nTo deploy the app to production, follow the platform-specific instructions for deploying Next.js apps (e.g., Vercel, Netlify, or your preferred hosting provider). Ensure you have set up the necessary environment variables for your production environment.\n\n## File Structure\n\n```\n├── prisma/                 # Prisma schema and migration files\n├── public/                 # Public static files\n├── src/\n│   ├── app/                # Next.js pages\n│   ├── components/         # React components\n│   ├── lib/                # Storage bucket implementations\n│   ├── prisma/             # Migration and Schema files\n│   └── public/             # Assets, etc..\n├── .env                    # Environment variables\n├── middleware.ts           # Clerk flow configuration middleware\n├── tailwind.config.ts      # Define custom styles\n├── package.json            # Project dependencies and scripts\n└── README.md               # Project documentation\n```\n\n## Contributing\n\nContributions are welcome! Please fork the repository, create a new branch, and submit a pull request with your changes.\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryanlarge13%2Fmemories","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryanlarge13%2Fmemories","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryanlarge13%2Fmemories/lists"}