Main URL :
https://snippify-backend.onrender.com/
Test URL :
https://snippify-backend.onrender.com/api/test/
Admin URL :
https://snippify-backend.onrender.com/admin/
Email :
admin@mail.com
Username :
admin
Password :
admin123
-
Must Have
-
Code Sharing:
- Users can create and share code snippets.
- Display language and the number of lines for each snippet.
- CRUD operations with public and private visibility options.
-
Sharing Options:
- Shareable links for snippets.
- Public, open-for-all, and selective sharing (GitHub Gist).
- Shorten link option.
-
Code to Image:
- Convert code snippets to shareable images (similar to carbon.now.sh).
-
Engagement Features:
- Comments on snippets.
- Reactions (upvote and downvote) for snippets.
-
User Profile:
- Profile page for users/developers.
- Lists all public and private snippets.
- Analytics for each snippet.
-
Advanced Search:
- GitHub-like advanced search functionality.
- Filter search results by folder, users, language, and specific topics.
-
Code Upload Options:
- Upload code as a file.
- Import from GitHub Gist.
-
Favorites:
- Add snippets to favorites.
-
-
Good to Have
-
Code Collaboration:
- Real-time collaboration for writing and viewing code.
- Similar to Figma or Google Docs collaboration features.
-
Version Control System (VCS):
- GitHub-like VCS for snippets.
- Includes snippet title, commit message, date, changes, etc.
-
Code Assistance:
- ChatGPT-like chatbot feature.
- Provides insights about code.
- Allows users to ask for improvements and reviews.
- Generate comments and tests
-
- Snippet
type SnippetType = {
snippetId: number | string; // Use either number or uuid, based on your preference
title: string;
description : string;
language: string[]; // Array of supported languages
createdAt: Date;
updatedAt: Date;
author: string;
user: UserIDType; // Assuming UserIDType is a predefined type for user identification
visibility: 'public' | 'private'; // Enum for visibility
upvote: {
count: number;
users: Array<User>; // Assuming User is a predefined type for user information
};
comments: `Array<CommentType>`;
codes: `Array<CodeType>`
};
-
Code
type CodeType = { title: string; // Name displayed on the homepage fileNameWithExtension: string; // Name of the code file with extension language: string[] | string; // String enum or array of supported languages createdAt: Date; updatedAt: Date; visibility: 'public' | 'private'; // Enum for visibility codeContent: string; // Assuming "code type" refers to the actual code content numberOfLines: number; };
-
Comments
type CommentType = {
id: number | string; // Use either number or uuid, based on your preference
author: string;
createdAt: Date;
commentText: string;
// reactions and replies to comment can be added later on
};
- User
type UserType = {
id: number | string; // Use either number or uuid, based on your preference
name: string;
username: string;
email: string; // Assuming you have a predefined type for email
imageURI: string; // URL for user image
numberOfSnippets: {
public: number;
private: number;
};
snippets: Array<SnippetType>; // Assuming SnippetType is the type for snippets
bio: string;
techStack: Array<string>; // Array of technology terms
};
Certainly! I'll integrate the information from the previous response with the new details you've provided:
-
Register:
- Email and Password (Verified Email)
- GitHub
Optional:
- Forgot Password
- Reset Password
Register Page:
- Form for username, email, password.
-
Login:
- Email and Password
- GitHub
Optional:
- Forgot Password
- Reset Password
Login Page:
- Form for username, email, password.
- Style similar to YouTube and Appwrite.
- Tabs:
- Home (Feed for users, popular and recent)
- User profile to navigate to user profile
- Create a new snippet
- Notification for user's snippets
- [Placeholder for additional tab]
- Search bar
- Logo of the App
- User Photo with an option for logout and user settings
- Components:
- Sidebar
- Topbar
- Feed-like UI to display the snippets in a card-like format with hover effect.
- Search with features to filter snippets with different options.
-
Registration:
- Email and Password
- Github
-
Login:
- Users can log in via email, GitHub, and Google.
-
Account Activation
-
Reset Password
-
User Profile Edit:
- Edit details like name, email, change password, photo, bio, tech.
-
Create/Edit:
- API to create a snippet with the following fields:
- Title
- Description
- Image (optional)
- Content
- File Name
- Language
- Visibility of snippet
- The API should support adding more than one snippet.
- API to create a snippet with the following fields:
-
Delete API:
- To delete an entire snippet.
- To delete a particular snippet in a collection.
-
Read:
- Option to show snippets based on filters like language, type, etc.
- Sorting options:
- All
- Based on filters (e.g., language, type)
- Sorting by time, like/dislike.
-
Reactions and Comments:
- Handled by PUT/PATCH methods.
- Real-time notifications (if possible) or normal notifications.
- Filters:
- Language
- Sort:
- Time
- Like/Dislike
-
User Snippets:
- API to fetch all snippets by a specific user.
-
Favorite Snippets:
- API to fetch or manage user-favorited snippets.
-
Recent Activity:
- API to fetch recent activities, e.g., new snippets, reactions, comments.