iacobucci / codemonkey

Codemonkey

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

todo
    frontend
        [ ] forward a pagina di profilo dopo login
        [ ] card di errore login
        pagina di impostazioni
            [ ] cliente
            [ ] codemonkey
            [ ] admin
            [ ] lavori

    backend
        [ ] check stato utenti in model
        [ ] refactoring di stile

docs
    [x] abstract
    raccolta dei requisiti
    analisi dei requisiti   
        [x] vocabolario
            utente registrato
            progetto
                proposta
                accettazione
                rifiuto
                interruzione
                terminazione
                modifica
            ricerca sinonimo: feed
            valutazioni
            ricerca
            
        [x] scenari
        [x] analisi del rischio
            [x] valutazione dei beni
            [x] minacce e controlli
            [x] tag e vulnerabilità
            [x] diagramma security use case e misuse case
            [x] security use case e misuse case
        [x] aggiornamento requisiti
            [x] funzionali
            [x] non funzionali
            [x] vocabolario
            [x] casi d'uso
    [x] analisi del problema
        [x] analisi funzionalità
            [x] tabelle funzionalità
            [x] tabelle informazioni di flusso
            [x] analisi vincoli
            [x] analisi interazioni
        [x] analisi ruoli
            [x] analisi ruoli e responsabilità
            [x] tabelle ruolo e informazioni
        [x] scomposizione del probelma
            [x] tabella scomposizione funzionalita
        [x] modello di dominio
            [x] Accesso
                User
                Registrazione
                Login
                Tipo
                Username
                    username
                Email
                    email
                Password
                    passwordDigest
                RegistredUser
                    username
                    email
                    password
                Cliente
                Codemonkey
                Admin
            [x] Account
                RegistredUser
                    username
                    email
                    password
                    biografia
                    immagineProfilo
                Codemonkey
                    setTags(Tag[])
                Cliente
                Biografia
                    biografia
                Tag
                    nome
                ImmagineDiProfilo
                    immagine
                progettazione
                    ActionAccount
                        setPassword
                        setBiografia
                        setImmagineProfilo
                        setTags
                        setEmail
            [x] Collaborazione
                Collaborazione
                    id
                    titolo
                    stato
                    descrizione
                    tags
                    valutazione
                    codemonkey
                    client
                    dataProposta
                    dataAccettazione
                    dataTerminazione
                Titolo
                    titolo
                Descrizione
                    descrizione
                Tag
                    nome
                Valutazione
                    rating
                    commento
                StatoProgetto
                    PROPOSTA
                    ACCETTATA
                    RIFIUTATA
                    INTERROTTA
                    TERMINATA
                Client
                    proponiCollaborazione(Codemonkey, Titolo, Descrizione, Tags)
                    modificaCollaborazione(Collaborazione, Titolo, Descrizione, Tags)
                    accettaCollaborazione(Collaborazione)
                Codemonkey
                    accettaCollaborazione(Collaborazione)
                    rifiutaCollaborazione(Collaborazione)
                    interrompiCollaborazione(Collaborazione)
                progettazione
                    ActionCollaborazione
                        proponiCollaborazione
                        modificaCollaborazione
                        accettaCollaborazione
                        rifiutaCollaborazione
                        interrompiCollaborazione
                        terminaCollaborazione
            [x] Tag
                Tag
                    nome
                    stato
                    dataProposta
                StatoTag
                    APPROVATO
                    RIFIUTATO
                    IN_ATTESA
                Admin
                    approvaTag(Tag)
                    rifiutaTag(Tag)
                Codemonkey
                    proponiTag(String)
                progettazione
                    ActionTag
                        proponiTag
                        approvaTag
                        rifiutaTag
            [x] Segnalazioni
                Admin
                    setStatoUser(User, StatoUser)
                StatoUser
                    IN_ATTESA
                    ATTIVO
                    LIMITATO
                    BLOCCATO
                RegistredUser
                    stato
                    reportUser(User, Motivazione)
                Report
                    mittente
                    destinatario
                    motivazione
                    data
                Motivazione
                    motivazione
                progettazione
                    ActionReport
                        setUserStatus
                        reportUser
            [x] Log
                Log
                    user
                    time
                    tipo
                    description
                TipoLog
                    REGISTRAZIONE
                    LOGIN
                    CANCELLA
                    SETPASSWORD
                    SETBIOGRAFIA
                    SETIMMAGINEPROFILO
                    SETTAGS
                    SETEMAIL
                    PROPONICOLLABORAZIONE
                    MODIFICACOLLABORAZIONE
                    ACCETTACOLLABORAZIONE
                    RIFIUTACOLLABORAZIONE
                    INTERROMPICOLLABORAZIONE
                    TERMINACOLLABORAZIONE
                    PROPONITAG
                    APPROVATAG
                    RIFIUTATAG
                    SETUSERSTATUS
                    REPORTUSER
                LogDescription
                    description
                RegistredUser
                Admin
                    downloadLog()
                    visualizzaLog()
        [x] analisi logica
            [x] diagramma dei package
            [x] diagrammi delle classi
                [x] accesso
                [x] amministrazione
                [x] utenti
                [x] homepage
            [x] diagrammi di sequenza
                [x] accesso
                [x] utente
                [x] codemonkey
                [x] cliente
                [x] admin
        [x] piano del collaudo
        [x] piano di lavoro
            [x] divisione dei lavori
            [x] sviluppi fururi
    [x] progettazione
        [x] progettazione architetturale
            [x] requisiti non funzionali
            [x] scelte tecnologiche
            [x] scelta dell'architettura
                [x] frontend
                [x] backend
                [x] database
            [x] diagramma dei package
            [x] diagramma dei componenti
        [x] progettazione di dettaglio
            [x] dominio
                gestione accesso
                    [x] Totp
                        [x] value: String
                    [x] Qrcode
                        [x] data: String
                gestione dei log
                    LogAccesso extends Log
                        registrazione(RegistredUser, DescrizioneLog)
                        login(RegistredUser, DescrizioneLog)
                        cancella(RegistredUser, DescrizioneLog)
                    LogAccount extends Log
                        setPassword(RegistredUser, DescrizioneLog)
                        setBiografia(RegistredUser, DescrizioneLog)
                        setImmagineProfilo(RegistredUser, DescrizioneLog)
                        setTags(RegistredUser, DescrizioneLog)
                        setEmail(RegistredUser, DescrizioneLog)
                    LogCollaborazione extends Log
                        proponiCollaborazione(RegistredUser, DescrizioneLog)
                        modificaCollaborazione(RegistredUser, DescrizioneLog)
                        accettaCollaborazione(RegistredUser, DescrizioneLog)
                        rifiutaCollaborazione(RegistredUser, DescrizioneLog)
                        interrompiCollaborazione(RegistredUser, DescrizioneLog)
                        terminaCollaborazione(RegistredUser, DescrizioneLog)
                    LogTag extends Log
                        proponiTag(RegistredUser, DescrizioneLog)
                        approvaTag(RegistredUser, DescrizioneLog)
                        rifiutaTag(RegistredUser, DescrizioneLog)
                    LogReport extends Log
                        setUserStatus(RegistredUser, DescrizioneLog)
                        reportUser(RegistredUser, DescrizioneLog)
            [x] interfacce
                [x] ILog
                [x] ILogAccesso
                [x] ILogAccount
                [x] ILogCollaborazione
                [x] ILogSegnalazione
                [x] ILogTag
                [x] IAutenticazione
                [x] IRegistrazione
                [x] IAmministratore
                [x] IUtente
                [x] ICliente
                [x] ICodemonkey
                [x] ICollaborazione
        [x] progettazione di dettaglio controllers
            [x] accesso
            [x] utente
            [x] client (frontend)
            [x] server (backend)
            [x] persistenza (database)
        [x] collaudo (test)
        deployment
            [x] containerizzazione
            [x] deploy
           
        
db
    [x] users
        [x] username
            primary key varchar(255)
        [x] password_digest
            varchar(255)
        [x] totp_secret
            varchar(255)
        [x] email
            varchar(255)
        [x] tipo
            enum (codemonkey, company, admin)

    [x] codemonkeys extends user
        [x] first_name
            varchar(255)
        [x] bio
            varchar(4095)
        [x] propic
            blob
        [x] status
            enum (active, banned)
        [x] last_name
            varchar(255)
        [x] rating
            int null
                
    [x] companies extends user
        [x] name
            varchar(255)
        [x] bio
            varchar(4095)
        [x] propic
            blob
        [x] status
            enum (active, banned)

    [x] admin extends user

    [x] technologies
        [x] id
            primary key int autoincrement
        [x] name
            varchar(255)
        [x] suggest_time
            datetime
        [x] approved
            boolean
        [x] rejected
            boolean

    [x] projects
        [x] id
            primary key int autoincrement
        [x] title
            varchar(255)
        [x] description
            varchar(4095)

        [x] status
            string

        [x] suggest_time
            datetime
        [x] start_time
            date
        [x] end_time
            date

        [x] rating
            int null
        [x] comment
            varchar(1024)
            
        [x] codemonkey
            foreign key a codemonkey
        [x] company
            foreign key a company
        [x] tecnologies
            foreign key a tecnologie
    
    [x] technologies_projects
        [x] project
            foreign key a project
        [x] technology
            foreign key a technology
    
    [x] projects_users
        [x] user
            foreign key a user
        [x] technology
            foreign key a technology
    
    [x] technologies_users
        [x] user
            foreign key a user
        [x] technology
            foreign key a technology

    [x] reports
        [x] id 
            primary key int autoincrement
        [x] from
            foreign key a user
        [x] to
            foreign key a user
        [x] data
            datetime
        [x] descrizione
            varchar(1024)

    [x] actions 1:N
        [x] id
            primary key int autoincrement
        [x] name
            varchar(255)
        [x] user
            foreign key a user
        [x] time
            datetime
        [x] description
            varchar(8191)

actions
    codemonkey
        signup
        login
        logout
        delete
        accept?project=<project.id>
        reject?project=<project.id>
        settings?nome=password&<nome>&cognome=<cognome>&bio=<bio>&propic=<propic>&email=<email>&tecnologie=<tecnologia1,tecnologia2,...>
        suggest?tecnologia=<tecnologia>
        report?[codemonkey=<codemonkey.username>||company=<codemonkey.username>]
    company
        signup
        login
        logout
        new?title=<project.id>&codemonkey=<codemonkey.username>&descrizione=<descrizione>&tecnologie=<tecnologia1,tecnologia2,...>
        terminate?project=<project.id>
        settings?nome=password&<nome>&bio=<bio>&propic=<propic>&email=<email>&tecnologie=<tecnologia1,tecnologia2,...>
        suggest?tecnologia=<tecnologia>
        report?[codemonkey=<codemonkey.username>||company=<codemonkey.username>]
    admin
        login
        logout
        set?[codemonkey=<codemonkey.username>||company=<codemonkey.username>]&stato=<attivo|bannato|sospeso>
        add?tecnologia=<tecnologia>
        approve?tecnologia=<tecnologia>
        rifiuta?tecnologia=<tecnologia>

model
    user
        codemonkey
        company
        admin
    project
    action 
    technology
    report
            
backend
    migrations
        [x] users
            [x] username
                primary key varchar(255)
            [x] password_digest
                varchar(255)
            [x] totp_secret
                varchar(255)
            [x] email
                varchar(255)
            [x] type
                enum (codemonkey, cliente, admin)

        [x] codemonkeys extends user
            [x] first_name
                varchar(255)
            [x] bio
                varchar(4095)
            [x] propic
                blob
            [x] status
                enum (active, banned)
            [x] last_name
                varchar(255)
            [x] rating
                int null
                    
        [x] companies extends user
            [x] name
                varchar(255)
            [x] propic
                blob
            [x] status
                enum (active, banned)

        [x] admin extends user

        [x] technologies
            [x] id
                primary key int autoincrement
            [x] name
                varchar(255)
            [x] suggest_time
                datetime
            [x] approved
                boolean
            [x] rejected
                boolean

        [x] projects
            [x] id
                primary key int autoincrement
            [x] title
                varchar(256)
            [x] description
                varchar(4096)

            [x] status
                string

            [x] suggest_time
                datetime
            [x] start_time
                date
            [x] end_time
                date

            [x] rating
                int null
            [x] comment
                varchar(1024)
                
            [x] codemonkey
                foreign key a codemonkey
            [x] cliente
                foreign key a cliente
            [x] tags
                foreign key a tag
        
        [x] technologies_projects
            [x] project
                foreign key a project
            [x] technology
                foreign key a technology
        
        [x] projects_users
            [x] user
                foreign key a user
            [x] technology
                foreign key a technology
        
        [x] technologies_users
            [x] user
                foreign key a user
            [x] technology
                foreign key a technology

        [x] reports
            [x] id 
                primary key int autoincrement
            [x] from
                foreign key a user
            [x] to
                foreign key a user
            [x] data
                datetime
            [x] descrizione
                varchar(1024)

        [x] actions 1:N
            [x] id
                primary key int autoincrement
            [x] name
                varchar(255)
            [x] user
                foreign key a user
            [x] time
                datetime
            [x] description
                varchar(8191)

    actions
        codemonkey
            signup
            login
            logout
            delete
            accept?project=<project.id>
            reject?project=<project.id>
            gestione?nome=password&<nome>&cognome=<cognome>&bio=<bio>&propic=<propic>&email=<email>&tag=<tag1,tag2,...>
            suggest?tag=<tag>
            report?[codemonkey=<codemonkey.username>||cliente=<codemonkey.username>]
        cliente
            signup
            login
            logout
            new?title=<project.id>&codemonkey=<codemonkey.username>&descrizione=<descrizione>&tag=<tag1,tag2,...>
            terminate?project=<project.id>
            gestione?nome=password&<nome>&bio=<bio>&propic=<propic>&email=<email>&tag=<tag1,tag2,...>
            suggest?tag=<tag>
            report?[codemonkey=<codemonkey.username>||cliente=<codemonkey.username>]
        admin
            login
            logout
            set?[codemonkey=<codemonkey.username>||cliente=<codemonkey.username>]&stato=<attivo|bannato|sospeso>
            add?tag=<tag>
            approve?tag=<tag>
            rifiuta?tag=<tag>

    endpoint
        /api
            endpoint di popolamento dell'interfaccia
                /feed
                    [x] /home
                        si filtra per codemonkey||cliente||tutti
                        si filtra per tag
                        l'ordine è casuale
                        vengono inviate 5 card alla volta
                        bisogna controllare quale card sono state gia visualizzate
                        /home?seen=<username1,username2,...>&technologies=<tag1,tag2,...>&type=<codemonkey|cliente|all>
                    [x] /user
                        si filtra per tag
                        l'ordine è project.suggest_time.asc
                        vengono inviate 5 card alla volta
                        /user?page=<num>&technologies=<tag1,tag2,...>
                    [x] technologies
                /dashboard
                    [x] actions
                        lista di tutte le actions
                        l'ordine è actions.time.desc
                        vengono inviate 20 card alla volta
                        /dashboard?page=<num>
                        ovviamente si possono perdere di vista le actions per via della paginazione
                    [x] technologies
                    [x] download
                /project
                    /index
                /report
                    /index
                /technology
                    /index
                /user
                    /index
            endpoint di controllo
                /project
                    [x] /accept
                    [x] /reject
                    [x] /new
                    [x] /terminate
                    [x] /edit
                /report
                    [x] /send
                    [x] /ban
                /technology
                    [x] /suggest
                    [x] /approve
                    [x] /reject
                /user
                    [x] /signup
                    [x] /login
                    [x] /delete
                    [x] /logout
                    [x] /gestione
                    [x] /rating_by_technologies
                        /propic
                        [x] /upload
                        [x] /delete
                        [x] /download

frontend
    components
        [ ] card
            [x] user
                [x] codemonkey
                    [x] username
                        link a /codemonkey/<username>
                    [x] nome
                    [x] cognome
                    [x] propic
                    [x] valutazione media
                        [x] component valutazione
                    [x] mailto
                    [x] bio
                    [x] tag
                        [x] list.tag

                [x] cliente
                    [x] username
                        link a /cliente/<username>
                    [x] nome
                    [x] propic
                    [x] mailto
                    [x] bio
                    [x] tag
                        [x] list.tag

            [x] project
                [x] cliente
                    [x] link a /cliente/<username>
                    [x] username
                    [x] propic
                [x] codemonkey
                    [x] link a /codemonkey/<username>
                    [x] username
                    [x] propic
                [x] titolo
                [x] descrizione
                [x] tag

                se data_inizio != null
                    se loggato come cliente e <username>==<cliente.username>
                        [ ] termina
                            [ ] dialog lavoro.valutazione
                    [ ] data_inizio
                    se data_fine != null
                        [ ] data_fine
                        [ ] valutazione
                        [ ] commento
                    se data_fine == null
                        [ ] in corso
                se data_inizio == null
                    se loggato come codemonkey
                        [ ] accetta
                            [ ] dialog lavoro.conferma
                                action=accetta
                        [ ] rifiuta
                            [ ] dialog lavoro.conferma
                                action=rifiuta

        [ ] dialog
            [x] signup
                [x] qrdata

            [ ] errore
                [ ] signup
                    [ ] messaggio
                [ ] risposta
                    [ ] messaggio
                [ ] permessi
                    [ ] messaggio
                [ ] login
                    [ ] messaggio

            [ ] lavoro
                [ ] conferma
                    [ ] proposta
                    [ ] accetta
                    [ ] rifiuta
                [ ] valutazione
            
            [ ] segnala
                [ ] motivazione
                [ ] conferma
            
            [ ] proponi collaborazione
                [ ] titolo
                [ ] descrizione
                [ ] tag
                [ ] conferma

        
        [ ] tag
            [ ] lista scrollabile orizzontalmente
            se in card codemonkey
                [ ] link a /codemonkey/<codemonkey.username>?tag=<tag.id>
            se in card cliente
                [ ] link a /codemonkey/<codemonkey.username>?tag=<tag.id>

        [ ] valutazione
            [ ] n/5
            [ ] 0..5 stelline
        
        [ ] tag selector component
            [ ] keyboard search and add
            [ ] collegamento con componente padre
                [ ] binding del dato al parametro nell'url

    pages
        [x] /signup
            [x] username
            [x] email
                [x] controllo email valida
            [x] password
            [x] password_confirmation
                [x] controllo password == password_confirmation
            [x] cliente/codemonkey
            [ ] forward a /gestione
                        
        [ ] /login
            [x] username
            [x] password
            [x] totp
            se codemonkey  
                [ ] vai a /collaborazioni
            se cliente
                [ ] vai a /feed?tipo=codemonkey
            se admin
                [ ] vai a /dashboard

        [ ] /
            parametri
                [x] tag selector
                    ?tag=<tag1,tag2,...>
            [x] lista card codemonkey


        [ ] /gestione
            se utente registrato
                [ ] email
                    [ ] controllo email valida
                password
                    [ ] vecchia password
                    [ ] nuova password
                    [ ] conferma nuova password
                        [ ] controllo nuova password == conferma nuova password
                [ ] bio
                [ ] propic
                [ ] tag
                    [ ] select.tag
            se admin
                [ ] gestione tags
                    [ ] accetta
                    [ ] rifiuta
                [ ] visualizza log
                    [ ] scarica log
                    filtri
                        [ ] tipo
                        [ ] username
                        [ ] data
                [ ] gestione utenti
                

        [ ] /codemonkey/<username>
            se loggato come <username>
                [ ] lista card.l
                    [ ] card.lavoro
                [ ] lista lavori.in_corso
                    [ ] card.lavoro
            
            se loggato come cliente
                [ ] /proponi
                    parametri
                        [ ] titolo
                        [ ] descrizione
                        [ ] tag
                            [ ] selezione da select.tag
                        [ ] cliente = <cliente.username>
                        [ ] codemonkey = <codemonkey.username>
                        [ ] data_inizio = Date.now()
                        [ ] data_fine = null
                        [ ] valutazione = null
                        [ ] commento = null

            [ ] lista card.lavoro
                
deployment
    [x] development environment
        [x] rails
            [x] live reload
        [x] angular
            [x] nginx reverse proxy
            [x] live reload
        [x] postgres
            [x] docker image

    [x] release environment
        [x] rails
            [x] build
            [x] run
        [x] angular
            [x] build
            [x] run
        [x] postgres
            [x] build
            [x] run

    [ ] hosting
        [ ] azure
        [x] vps
            container registry
                [x] docker hub
                [ ] privato

debug
    JWT
        admin1
            eyJhbGciOiJIUzI2NiJ9.eyJleHAiOjE2ODQ4NTcxNzEsInVzZXJfaWQiOiJhZG1pbjEifQ.OPttxCJHCuXykeSaCPQLMLYCtFC89LrczmjtfNiXHhY

        google
            eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2ODQ4ODc4NzgsInVzZXJfaWQiOiJnb29nbGUifQ.G6bI3AEuJa2j4fnINaxkdYUgX9jf85Oj9u4xI8ALh9M

        mario
            eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2ODQ4NTc2NDcsInVzZXJfaWQiOiJtYXJpbyJ9.mPayYPyy45Sz26vkvjus2gupb9ZrG0KdJrsSaYdctJk

    users
        [x] Charles Babbage
        [x] Geoge Boole
        [x] Alan Turing
        [x] Claude Shannon
        [x] John Von Neumann
        [x] Marvin Minsky
        [ ] Norbert Weiner
        [ ] Ray Solomonoff
        [ ] John McCarthy
        [ ] Dennis Ritchie
        [ ] Edsger Dijkstra
        [ ] Richard Hamming
        [ ] Warren McCullock
        [ ] Walter Pitts
        [ ] Herbert Simon
        [ ] Allen Newell
        [ ] Joseph Weizenbaum
        [ ] Seymour Papert
        [ ] Vannevar Bush
        [ ] Corrado Bohm
        [ ] Valentino Braitenberg
        [ ] Donald Knuth
        [ ] Brian Kernighan
        [ ] Dennis Ritchie
        [ ] Richard Stallman
        [ ] Bill Gates
        [ ] Steve Jobs
        [ ] Steve Wozniak
        [ ] George Hotz
        
        [ ] Ada Lovelace
        [ ] Rózsa Péter
        [ ] Grace hopper
        [ ] Barbara Liskov
        [ ] Margaret Hamilton
        [ ] Katherine Johnson

About

Codemonkey


Languages

Language:Ruby 49.8%Language:TypeScript 30.0%Language:HTML 12.1%Language:Shell 4.8%Language:SCSS 1.6%Language:Dockerfile 0.8%Language:Python 0.5%Language:CSS 0.3%Language:Makefile 0.1%