Skip to content

Commit

Permalink
add
Browse files Browse the repository at this point in the history
  • Loading branch information
jwilliam96 committed Sep 16, 2024
2 parents 5408307 + 6b99ac3 commit f78442b
Show file tree
Hide file tree
Showing 5 changed files with 230 additions and 30 deletions.
103 changes: 102 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,102 @@
# s17-12-t-node-react
# 🌐OhMyTrip

<br/>

![Global Link](globallink.jpg)

## Descripción

<p>OhMyTrip es una red social que se enfoca en destinos atipicos</p>

### Plan de negocio

[Abrir](./plan-de-negocios.md)

## Tecnologías Utilizadas

### Front End

[![Skills](https://skillicons.dev/icons?i=tailwind,next)](https://skillicons.dev)

### Back End

[![Skills](https://skillicons.dev/icons?i=nest,mongodb)](https://skillicons.dev)

### Diseño

[![Skills](https://skillicons.dev/icons?i=figma)](https://skillicons.dev)

### Gestion de Proyecto

<p>Para poder comunicarnos utilizamos las herramientas de Jira, Meet, Slack, Whatsapp y Discord.</p>

<br/>

## Colaboradores

<br/>

| Integrantes | Roles | Linkedin | Github |
| ------------------------ | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| Xochitl Farías | Scrum Master | [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/xfarias-scrum-master/) | [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/xochfa) |
| John William Sanchez | Frontend | [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/lazaro-vega-sanchez) | [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/jwilliam96) |
| Gaspar Castillo Catrifol | Backend | [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/isakidev/) | [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/isakiDev) |
| Lazaro Vega Sanchez | Frontend | [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/lazaro-vega-sanchez) | [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/lazaronazareno) |
| Maximiliano | Backend | [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)]() | [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/mingeniero) |
| André | Frontend/Backend | [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/ae95caba) | [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/ae95caba) |
| Silvia Romano | UX/UI | [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](http://www.linkedin.com/in/sil-romano-811560286) | [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](http://github.com/soysil) |
| Alberto Gómez Juan | Backend | [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/agomezjuan/) | [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/agomezjuan) |

<br/>

## Instrucciones para ejecutar el proyecto

Este proyecto está organizado como un monorepo con dos carpetas principales: `frontend` y `backend`. Para ejecutar el proyecto, sigue estos pasos desde la raíz del repositorio.

### Configuración de variables de entorno

Primero, asegúrate de crear los archivos `.env` en las carpetas de `backend` y `frontend` basándote en los archivos `.env-example` disponibles en cada carpeta.

### Instalación de dependencias

Instala las dependencias para ambos proyectos (backend y frontend) ejecutando los siguientes comandos:

```sh
# Para el backend
cd backend
npm i
# Para el frontend
cd frontend
npm i

```

## Para rellenar la base de datos con datos falsos y poder ver contenido:

```sh
#poner comandos aca
```

## Ejecución del Backend

Para iniciar el servidor del backend en modo de desarrollo:

```sh
cd backend
npm run start:dev
```

## Ejecución del Frontend

Para iniciar el servidor del frontend en modo de desarrollo:

```sh
cd frontend
npm run dev
```

## Enlaces del proyecto

| Figma | Jira | Frontend deploy | Backend deploy | Repositorio |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [![Figma](https://skillicons.dev/icons?i=figma)](https://www.figma.com/design/hUG1EOkKXqpRinerOEdKTM/team-no-country-17-12?node-id=0-1&t=CBa1crfmRYe7RGdW-0) | [![Jira](https://img.shields.io/badge/Jira-0052CC?style=for-the-badge&logo=jira&logoColor=white)](https://xoch-scrum.atlassian.net/jira/software/projects/S1TNR/boards/14/timeline?shared=&atlOrigin=eyJpIjoiODcyYWZiMzVjZDM1NDE5MWIzZDUyZmY2MzMyZDIxOGMiLCJwIjoiaiJ9) | [![Link al deploy del frontend](https://img.shields.io/badge/live-demo-00C4CC?style=for-the-badge)](https://frontend-nu-five-59.vercel.app/feed) | [![Link al deploy del backend](https://img.shields.io/badge/LIVE-DEMO-00C4CC?style=for-the-badge)](https://ohmytrip-backend-production.up.railway.app/api/v1) | [![Github](https://img.shields.io/badge/Github-black?style=for-the-badge&logo=github&logoColor=white)](https://github.com/No-Country-simulation/s17-12-t-node-react) |
1 change: 0 additions & 1 deletion frontend/src/components/Cards/CardFeed.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ export async function CardFeed({ album }: { album: AlbumFromFetch }) {
<AVisitar album={album} />
</div>

<p className="px-10 truncate">{album.description}</p>
<div className="flex flex-wrap px-10">
<Link href={'/perfil/' + album.userId}><strong>{album.userId}:</strong></Link>
{
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/icons/Icons.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export const IconImage = ({ className, size = 30 }: IconProps) => {
export const IconUser = ({ className, size = 30 }: IconProps) => {
return <FaUser size={size} className={className} />
}
export const IconPlusCircle = ({ className, size = 30 }: IconProps) => {
export const IconPlusCircle = ({ className, size = 60 }: IconProps) => {
return <LuPlusCircle size={size} className={className} />
}
export const IconBook = ({ className, size = 30 }: IconProps) => {
Expand Down
35 changes: 8 additions & 27 deletions frontend/src/ui/user/Footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ const AUTH_ROUTES = [
{
url: '/album/create',
icon: <IconPlusCircle />,
label: 'Crear álbum',
label: '',
},
{
url: '/perfil',
Expand Down Expand Up @@ -70,36 +70,17 @@ export function Footer() {

const routes = isAuthenticated ? AUTH_ROUTES : DEFAULT_ROUTES

const createAlbumIconStyles = 'flex flex-col items-center rounded-full size-[70px] justify-center relative -top-10 bg-FondoPrimary ss:size-24'
const createAlbumIconStyles = 'flex flex-col items-center rounded-full size-24 justify-center relative -top-10 bg-FondoPrimary ss:size-24'
const perfilUrl = '/perfil/' + userId

return (
<footer className='bg-FondoPrimary sticky bottom-0 left-0 right-0 text-white rounded-t-2xl py-2 px-2 mt-16 flex justify-between sm:px-6 z-10'>
{
routes.map((route) => (
<Link key={route.url} href={route.url === '/perfil' ? perfilUrl : route.url} className={`flex flex-col items-center justify-center ${route.url === '/album/create' ? createAlbumIconStyles : ''}`} >
{route.icon}
<p>{route.label}</p>
</Link>
))
}
<div>
<Link href={'/album/create'} className="flex flex-col items-center rounded-full size-[70px] justify-center relative -top-10 bg-FondoPrimary ss:size-24">
<IconPlusCircle size={50} />
{/* <p className="text-[10px]">Crear album</p> */}
</Link>

<Link href={'/perfil/test'} className="flex flex-col items-center justify-center">
<IconBook />
<p>A visitar</p>
<footer className='bg-FondoPrimary sticky bottom-0 left-0 right-0 size text-white rounded-t-2xl py-2 px-2 mt-16 flex justify-between sm:px-6 z-10'>
{routes.map((route) => (
<Link key={route.url} href={route.url === '/perfil' ? perfilUrl : route.url} className={`flex flex-col items-center justify-center ${route.url === '/album/create' ? createAlbumIconStyles : ''}`}>
{route.icon}
<p>{route.label}</p>
</Link>
</div>

<Link href={"/perfil/66e1fca2088ce50d7e07a626"} className="flex flex-col items-center justify-center">
<IconUser />
<p>Perfil</p>
</Link>

))}
{
isAuthenticated && (
<button type='button' onClick={handleLogout} className='text-white flex flex-col items-center justify-center'>
Expand Down
119 changes: 119 additions & 0 deletions plan-de-negocios.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
# Plan de Negocios para Red Social de Viajes

---

## 1. Resumen Ejecutivo

**Nombre de la Plataforma:** [OhMyTrip]

**Visión:** Ser la principal red social para viajeros, ofreciendo una experiencia única y enriquecedora a los entusiastas de los viajes.

**Objetivo:** Monetizar la plataforma mediante la implementación de funcionalidades pagas y publicidad, ofreciendo valor adicional a los usuarios.

## 2. Análisis del Mercado

**Audiencia Objetivo:**

- **Demografía:** Viajeros frecuentes, entusiastas de los viajes, influencers de viajes, bloggers.
- **Geografía:** Internacional, con un enfoque inicial en regiones específicas según tu estrategia de marketing.

**Competencia:**

- Plataformas de viajes como Instagram, TripAdvisor, y redes sociales generales con secciones de viajes.
- **Diferenciador:** Enfoque exclusivo en viajes, con funciones especializadas para compartir y explorar experiencias de viaje.

## 3. Estrategia de Monetización

### A. Publicidad

1. **Anuncios Dirigidos:**

- Ofrecer espacio para anuncios a empresas de viajes, hoteles, aerolíneas, y destinos turísticos.
- Implementar anuncios en el feed de usuario, historias, y banners.

2. **Publicidad Nativa:**
- Crear anuncios que se integren naturalmente con el contenido de la plataforma.

### B. Funcionalidades Pagas

1. **Suscripciones Premium:**

- **Funcionalidades Incluidas:**
- Experiencia sin anuncios.
- Contenido exclusivo como guías de viaje y recomendaciones personalizadas.
- Posibilidad de destacar sus publicaciones en el feed.

2. **Contenido Exclusivo:**

- Venta de ebooks, guías de viaje, o cursos en línea sobre planificación y fotografía de viajes: hacer una sección donde los usuarios puedan ofrecer estos servicios, pudiendo nosotros cobrar una comisión por cada operación.
- Poder ver con un solo clic cuánto le saldría al usuario un viaje desde su ubicación hasta el lugar del álbum.
- Acceso a eventos virtuales, webinars, o experiencias exclusivas para suscriptores.

3. **Herramientas Adicionales:**
- **Mejoras en el Perfil:** Funcionalidades adicionales como temas personalizados, badges exclusivos, o la posibilidad de agregar enlaces de afiliado.
- **Destacar Publicaciones:** Opción para pagar por la promoción de sus propias publicaciones.

## 4. Plan de Marketing

### A. Estrategias de Captación de Usuarios

1. **Marketing en Redes Sociales:**

- Promocionar la plataforma en Facebook, Instagram, Twitter, y TikTok con contenido visual atractivo.
- Colaboraciones con influencers de viajes para aumentar la visibilidad.

2. **SEO y Content Marketing:**

- Crear contenido de blog sobre destinos de viaje, consejos, y experiencias destacadas.
- Optimizar el sitio para búsquedas relacionadas con viajes.

3. **Marketing de Afiliación:**
- Asociarse con sitios de viajes y turismo para promover la plataforma a través de sus canales.

### B. Estrategias de Retención de Usuarios

1. **Programas de Recompensas:**

- Implementar un sistema de puntos o recompensas por actividades en la plataforma que puedan ser canjeados por funcionalidades premium o descuentos.

2. **Feedback y Actualizaciones:**
- Escuchar a los usuarios para mejorar continuamente la plataforma y lanzar nuevas características basadas en sus necesidades y sugerencias.

## 5. Operaciones y Gestión

### A. Desarrollo y Mantenimiento

1. **Equipo de Desarrollo:**

- Contratar o subcontratar desarrolladores para mantener y mejorar la plataforma.
- Implementar nuevas funcionalidades y asegurar la estabilidad de la plataforma.

2. **Atención al Cliente:**
- Establecer un equipo para resolver problemas de los usuarios, responder preguntas y manejar quejas.

### B. Finanzas

1. **Costos Iniciales:**

- Desarrollo de la plataforma, marketing inicial, y costos operativos.

2. **Proyecciones de Ingresos:**

- Basadas en ingresos por publicidad y suscripciones. Crear escenarios optimistas y conservadores.

3. **Análisis Financiero:**
- Revisar regularmente el rendimiento financiero y ajustar las estrategias de monetización según sea necesario.

## 6. Implementación y Cronograma

### A. Fases de Implementación

1. **Fase 1:** Lanzamiento de la plataforma y adquisición de usuarios.
2. **Fase 2:** Introducción de funcionalidades pagas y suscripciones premium.
3. **Fase 3:** Expansión de la publicidad y promociones adicionales.

### B. Cronograma

- **Mes 1-3:** Desarrollo y lanzamiento inicial.
- **Mes 4-6:** Introducción de funcionalidades pagas y campañas de marketing.
- **Mes 7-12:** Optimización y expansión de monetización.

0 comments on commit f78442b

Please sign in to comment.